一、什么是runtime(運(yùn)行時機(jī)制)Objective-C是基于C語言加入了面向?qū)ο筇匦院拖⑥D(zhuǎn)發(fā)機(jī)制的動態(tài)語言画恰,這意味著它不僅需要一個編譯器搬泥,還需要Runtime系統(tǒng)來動態(tài)創(chuàng)建類和對象,進(jìn)行消息發(fā)送和轉(zhuǎn)發(fā)。
1.runtime是一套比較底層的純C語言API, 屬于1個C語言庫, 包含了很多底層的C語言API埋虹。
2.平時編寫的OC代碼, 在程序運(yùn)行過程中, 其實(shí)最終都是轉(zhuǎn)成了runtime的C語言代碼, runtime算是OC的幕后工作者
二、runtime有什么作用:runtime是屬于OC的底層, 可以進(jìn)行一些非常底層的操作(用OC是無法現(xiàn)實(shí)的, 不好實(shí)現(xiàn))娩怎。
1.在程序運(yùn)行過程中, 動態(tài)創(chuàng)建一個類(比如KVO的底層實(shí)現(xiàn))
2.在程序運(yùn)行過程中, 動態(tài)地為某個類添加屬性\方法, 修改屬性值\方法
3.遍歷一個類的所有成員變量(屬性)\所有方法
三搔课、runtime的相關(guān)運(yùn)用
* NSCoding(歸檔和解檔, 利用runtime遍歷模型對象的所有屬性)
* 字典 --> 模型 (利用runtime遍歷模型對象的所有屬性, 根據(jù)屬性名從字典中取出對應(yīng)的值, 設(shè)置到模型的屬性上)
* KVO(利用runtime動態(tài)產(chǎn)生一個派生類,KVO的實(shí)現(xiàn)原理截亦,實(shí)際上是重寫了這個派生類的某個屬性的setter方法爬泥,這樣就可以,實(shí)時監(jiān)聽它的值得變化)崩瓤。
* 用于封裝框架(想怎么改就怎么改)