1>是什么:
1.是一套純C語言的API,屬于一個C語言的庫,包含了很多底層的C語言的API
2.平時編寫的OC代碼,在運行過程中,其實最終都是轉(zhuǎn)換成了runtime的C語言代碼,runtime算是OC的幕后工作者
3.舉例
//runtime實現(xiàn)機制
//OC
[[XZYPerson alloc]init];
//C語言
objc_msgSend(objc_msgSend("XZYPerson",@"alooc"),@"init");
2>用法:
1.runtime是OC的底層,可以進行一些非常底層的操作(用OC是無法實現(xiàn)的,不好實現(xiàn))
*在程序運行過程中動態(tài)生成的類(比如KVO的底層實現(xiàn))
*在程序運行過程中動態(tài)的為某個類添加屬性\方法修改屬性值\方法(重寫對象的setter方法)
*可以遍歷一個類的所有成員變量(屬性)\所有方法
3.相關(guān)的頭文件和方法
1.頭文件
<objc/runtime.h>
<objc/message.h>
2.相關(guān)應(yīng)用
*NSCoding(歸檔和解檔)
*字典轉(zhuǎn)模型(利用runtime遍歷模型對象的所有屬性,很據(jù)屬性名稱從字典取出對應(yīng)的值,設(shè)置到模型的屬性上)
*KVO(利用runtime動態(tài)產(chǎn)生一個類)
*用于封裝框架
3.相關(guān)函數(shù)
*objc_msgSend: 給對象發(fā)送消息
*class_copyMethodList: 遍歷某個類的所有的方法
#class_copyIvarList: 遍歷某個類所有的成員變量 該方法等同于class_copyPropertyList,返回的都是一個類的所有成員變量數(shù)組,但是class_copyIvarList返回的是一個指針數(shù)組 用Ivar的對象接收,而class_copyPropertyList返回的C語言的數(shù)組,用objc_property_t的對象接收
*class_...
4>必備常識
1.Ivar: 成員變量
2.Method: 成員方法