OC語言description方法和sel


 

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找到地址,調用方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM