關於runtime

runtime是什麼?

1.runtime 是一套底層的C語言API(包含了很多強大實用的C語言數據類型,C語言函數)

2.實際上,平時我們編寫的OC代碼,底層都是基於runtime實現的,也就是說,我們編寫的OC代碼,最終都是轉成了底層的runtime代碼(C語言代碼)

總結:簡單明瞭的說,OC的底層是C語言,而runtime就相當於是OC的幕後工作者,程序的運行都會經過OC代碼 ---> runtime的 C 語言代碼這一過程。


runtime在有什麼作用?

runtime能夠動態的生成,修改,刪除一個類,一個成員變量,一個方法。


runtime常見的函數,頭文件

#import <objc / runtime . h>

Ivar * class_copyIvarList : 獲得某個類內部的所有成員變量    Ivar:成員變量

Method * class _copyMethodList : 獲得某個類內部的所有方法   Method:成員方法

Method class_getInstanceMethod : 獲得某個實例方法(對象方法,減號— 開頭)

Method class_getClassMethod : 獲得某個類方法(加號+開頭)

Method_exchangeImplementations : 交換2個方法的具體實現


我們在實際開發中調用方法實際發生了什麼呢?

[self  printMessageWithString:@"Hello World!"];

它實際上會被編譯器翻譯成:

objc_msgSend(self,@selector(printMessageWithString:),@"Hello World!")


runtime的相關應用:

1.封裝框架,runtime機制在實際開發中的主要用途

2.NSCoding(歸檔,解檔,利用runtime遍歷模型對象的所有屬性)

3.NSDictionary:(利用runtime遍歷模型對象的所有屬性, 根據屬性名從字典中取出對應的值, 設置到模型的屬性上

4.KVO(利用了runtime動態的產生一個類)



發佈了37 篇原創文章 · 獲贊 8 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章