RunTime的學習

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的底層實現)

代碼實踐:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉至元數據結尾創建: 董瀟偉,最新修改于: 十二月 23, 2016 轉至元數據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,768評論 0 9
  • 這篇文章完全是基于南峰子老師博客的轉載 這篇文章完全是基于南峰子老師博客的轉載 這篇文章完全是基于南峰子老師博客的...
    西木閱讀 30,628評論 33 466
  • 參考鏈接: http://www.cnblogs.com/ioshe/p/5489086.html 簡介 Runt...
    樂樂的簡書閱讀 2,156評論 0 9
  • 我們常常會聽說 Objective-C 是一門動態語言,那么這個「動態」表現在哪呢?我想最主要的表現就是 Obje...
    Ethan_Struggle閱讀 2,231評論 0 7
  • 越來越喜歡比較輕淺而簡單的思想 喜歡輕松而愜意的時光 像入伏天的傍晚 放足行走 以收拾潦草的情緒 去抵抗那些沉悶或...
    果木子閱讀 107評論 0 0