Objective-C Class Selector

來源:互聯網
上載者:User

在Objective-C裡面,一個類被正確的編譯過後,在這個編譯成功的類裡面,存在一個變數用於儲存這個類的資訊。我們可以通過一個普通的字元 串取得這個Class,也可以通過我們產生的對象取得這個Class。Class被成功取得之後,我們可以把這個Class當作一個已經定義好的類來使用 它。

 

Selector和Class比較類似,不同的地方是Selector用於表示方法。 在Objective-C的程式進行編譯的時候,會根據方法的名字(包括參數列表)確定一個唯一的身份證明(實際上就是一個整數),不用的類裡面的相同名 字相同聲明的方法的身份證明是一樣的。這樣在程式執行的時候,runtime就不用費力的進行方法的名字比較來確定是執行哪一個方法了,只是通過一個整數 的尋找就可以馬上定位到相應的方法,然後找到相應的方法的入口地址,這樣方法就可以被執行了。 

 

暫時把SEL、@selector、Class當成反射來理解,id當成viod*來理解了。IMP就是void(* IMP)(id,SEL,...)的函數指標,第一個id和第二個SEL是必需的,可以通過訪問_cmd得到這個方法的SEL

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.