李洪強iOS開發之OC語言description方法和sel

來源:互聯網
上載者:User

標籤:

OC語言description方法和sel

一、description方法

Description方法包括類方法和對象方法。(NSObject類所包含)

(一)基本知識

-description(對象方法)

使用NSLog和@%輸出某個對象時,會調用對象的description方法,並拿到傳回值進行輸出。

+description(類方法)

使用NSLog和@%輸出某個對象時,會調用類對象的description方法,並拿到傳回值進行輸出,把整個對象一次性列印出來,列印對象使用%@。

使用@%列印對象如(“@%”,P)預設列印輸出為<類名:記憶體位址>,雖然字串也是對象,但字串在使用@%列印時情況特殊。

 

那麼應該怎麼實現列印對象的所有屬性呢?在類的實現中重寫description方法。

(二)實現列印對象的所有屬性

 

(三)區別

+description方法決定了類對象的輸出結果,即類本身

-description方法決定了執行個體對象的輸出結果,即Person建立的對象。

(四)列印相關補充

 

二、SEL

SEL:全稱Selector 表示方法的儲存位置。

方法在記憶體中是怎麼儲存的?

 

Person *p=[[Person alloc] init];

[p test];

尋找方法的過程:

(1)首先把test這個方法名封裝成sel類型的資料;

(2)根據SEL資料找到對應的方法地址;

(3)根據方法地址調用相應的方法。

(4)注意:在這個操作過程中有緩衝,第一次找的時候是一個一個的找,非常耗效能,之後再用到的時候就直接使用。

關於_cmd:每個方法的內部都有一個-cmd,代表著當前方法。

 

注意:SEL其實是對方法的一種封裝,將方法封裝成一個SEL類型的資料,去尋找對應的方法地址,找到方法地址後就可以調用方法。這些都是運行時特性,發訊息就是發送SEL,然後根據SEL找到地址,調用方法。

李洪強iOS開發之OC語言description方法和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.