Runtime

什麼是runtime?函數

1> runtime是一套底層的C語言API(包含不少強大實用的C語言數據類型、C語言函數)code

2> 實際上,平時咱們編寫的OC代碼,底層都是基於runtime實現的對象

* 也就是說,平時咱們編寫的OC代碼,最終都是轉成了底層的runtime代碼(C語言代碼)get

 

runtime有啥用?io

1> 能動態產生一個類、一個成員變量、一個方法class

2> 能動態修改一個類、一個成員變量、一個方法import

3> 能動態刪除一個類、一個成員變量、一個方法變量

 

常見的函數、頭文件List

#import <objc/runtime.h> : 成員變量、類、方法遍歷

Ivar * class_copyIvarList : 得到某個類內部的全部成員變量

Method * class_copyMethodList : 得到某個類內部的全部方法

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

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

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

 

#import <objc/message.h> : 消息機制

objc_msgSend(....)

 

runtime的平常應用(持續更新):

1.遍歷類的屬性

unsigned int count;
    Ivar *ivarList = class_copyIvarList([UITextField class], &count);
    for (int i = 0; i < count; i++) {
        Ivar ivar = ivarList[i];
        NSLog(@"%s",ivar_getName(ivar));
    }
    free(ivarList);
相關文章
相關標籤/搜索