OC runtime常見(jiàn)應(yīng)用

那什么是OC runtime

?簡(jiǎn)單來(lái)說(shuō),Objective-C runtime是一個(gè)實(shí)現(xiàn)Objective-C語(yǔ)言的C庫(kù)。對(duì)象可以用C語(yǔ)言中的結(jié)構(gòu)體表示,而方法(methods)可以用C函數(shù)實(shí)現(xiàn)。事實(shí)上,他們差不多也是這么干了,另外再加上了一些額外的特性。這些結(jié)構(gòu)體和函數(shù)被runtime函數(shù)封裝后,我們就可以在程序運(yùn)行時(shí)創(chuàng)建,檢查,修改類,對(duì)象和它們的方法。

runtime常用方法

```

//返回一個(gè)指向類的成員變量數(shù)組的指針

class_copyIvarList()

//返回一個(gè)指向類的屬性數(shù)組的指針

class_copyPropertyList()

注意:根據(jù)Apple官方runtime.h文檔所示,上面兩個(gè)方法返回的指針,在使用完畢之后必須free()。

---------------------------------------------------

//獲取成員變量名-->C類型的字符串

?ivar_getName()

?//獲取屬性名-->C類型的字符串

?property_getName()

?---------------------------------------------------

?typedef struct objc_method *Method;

?class_getInstanceMethod()

? //以上兩個(gè)函數(shù)傳入返回Method類型

? class_getClassMethod()

? ---------------------------------------------------

? //交換兩個(gè)方法的實(shí)現(xiàn)

? method_exchangeImplementations()

```

runtime用法

1.動(dòng)態(tài)的遍歷一個(gè)類的所有成員變量,屬性,方法,協(xié)議等


獲取屬性成員變量等

2、可以利用遍歷類的屬性,來(lái)快速的進(jìn)行歸檔操作


解歸檔

3、將從網(wǎng)絡(luò)上下載的json數(shù)據(jù)進(jìn)行字典轉(zhuǎn)模型


json解析

3、動(dòng)態(tài)添加 交換方法


添加交換方法

4、攔截調(diào)用動(dòng)態(tài)添加


動(dòng)態(tài)實(shí)現(xiàn)方法

5、動(dòng)態(tài)變量控制


動(dòng)態(tài)修改屬性值

6、拓展屬性


拓展添加屬性

7、實(shí)現(xiàn)KVO


KVO
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容