OC的特性是:
消息分發(fā)贴谎,是動態(tài)調(diào)用過程,就是在編譯時并不知道消息的接收對象季稳,只有在運行時才會才會根據(jù)函數(shù)的名稱找到對應的函數(shù)來調(diào)用擅这,,在運行過程中都是轉(zhuǎn)成了runtime的C語言代碼景鼠,真正的boss是runtime仲翎。
類的組成在:
isa指針;铛漓;super_class父類溯香;;cache方法混存區(qū)浓恶;玫坛;Version類的版本信息;包晰;objc_method_list存放類的成員方法
調(diào)用方法過程:
例如當我們?nèi)フ{(diào)用respondsToSelector:這個方法時湿镀,調(diào)用對象首先會先根據(jù)isa找到對應的類(class),先去chahe中查找這個方法是否緩存過伐憾,沒有的話再去遍歷methodLists,如果還沒有就根據(jù)super_class找到父類勉痴,再去像之前那樣查找這個方法,知道super_class為nil树肃,就無法找到這個方法了蒸矛,則返回NO。
常見作用:
1.動態(tài)的添加對象的成員變量和方法,修改屬性值和方法
2.動態(tài)交換兩個方法的實現(xiàn)
3.實現(xiàn)分類也可以添加屬性
4.實現(xiàn)NSCoding的自動歸檔和解檔
5.實現(xiàn)字典轉(zhuǎn)模型的自動轉(zhuǎn)換
6.動態(tài)創(chuàng)建一個類(比如KVO的底層實現(xiàn))