什么是runtime?
? - 實際上我們編寫的所有OC代碼,最終都是轉(zhuǎn)成了runtime庫的東西,比如類轉(zhuǎn)成了runtime庫里面的結(jié)構(gòu)體等數(shù)據(jù)類型,方法轉(zhuǎn)成了runtime庫里面的C語言函數(shù),平時調(diào)方法都是轉(zhuǎn)成了objc_msgSend函數(shù)(所以說OC有個消息發(fā)送機制)
?? - 因此,可以說runtime是OC的底層實現(xiàn),是OC的幕后執(zhí)行者runtime有啥用?
?? - 能動態(tài)產(chǎn)生一個類、一個成員變量、一個方法
? - 能動態(tài)修改一個類、一個成員變量、一個方法
? - 能動態(tài)刪除一個類、一個成員變量、一個方法
? -常見的函數(shù)、頭文件
#import: 成員變量、類、方法
class_copyIvarList : 獲得某個類內(nèi)部的所有成員變量
class_copyMethodList : 獲得某個類內(nèi)部的所有方法
class_getInstanceMethod : 獲得某個具體的實例方法(對象方法,減號開頭)
class_getClassMethod : 獲得某個具體的類方法 (加號)
method_exchangeImplementations : 交換2個方法的實現(xiàn)#import消息機制
objc_msgSend(...);