OC的特性是:
消息分發,是動態調用過程,就是在編譯時并不知道消息的接收對象,只有在運行時才會才會根據函數的名稱找到對應的函數來調用,,在運行過程中都是轉成了runtime的C語言代碼,真正的boss是runtime。
類的組成在:
isa指針;;super_class父類;;cache方法混存區;;Version類的版本信息;;objc_method_list存放類的成員方法
調用方法過程:
例如當我們去調用respondsToSelector:這個方法時,調用對象首先會先根據isa找到對應的類(class),先去chahe中查找這個方法是否緩存過,沒有的話再去遍歷methodLists,如果還沒有就根據super_class找到父類,再去像之前那樣查找這個方法,知道super_class為nil,就無法找到這個方法了,則返回NO。
常見作用:
1.動態的添加對象的成員變量和方法,修改屬性值和方法
2.動態交換兩個方法的實現
3.實現分類也可以添加屬性
4.實現NSCoding的自動歸檔和解檔
5.實現字典轉模型的自動轉換
6.動態創建一個類(比如KVO的底層實現)