iOS面試題:對runtime的理解

概念

Objective-C是基于C語言加入面向?qū)ο筇匦院拖⑥D(zhuǎn)發(fā)機制的動態(tài)語言,這就是說它不僅需要一個編譯器,還需要Runtime系統(tǒng)動態(tài)的創(chuàng)建類和對象,進行消息發(fā)送和轉(zhuǎn)發(fā)。

我們寫的代碼在程序運行過程中都會被轉(zhuǎn)化成runtime的C代碼執(zhí)行,例如[target doSomething];會被轉(zhuǎn)化成objc_msgSend(target, @selector(doSomething));。

OC中一切都被設(shè)計成了對象,我們都知道一個類被初始化成一個實例,這個實例是一個對象。實際上一個類本質(zhì)上也是一個對象,在runtime中用結(jié)構(gòu)體表示。

runtime是OC的底層,它就是一套純C語言的API。那說到這,OC可以運行代碼runtime肯定能運行,runtime可以運行的程序在OC下未必能夠運行。

為什么要熟悉掌握Runtime機制?

Runtime 在實際開發(fā)中,會經(jīng)常用到嗎?這個答案是肯定的。但是Runtime用的好不好在于理解程度,理解的好代碼質(zhì)量高效實用;用的不好,容易自己造坑。在實際開發(fā)中,我并不是推薦大家熟悉靈活的運用底層的東西,而是熟悉知道底層的運行機制。要不已經(jīng)封裝好看又好用的API干啥使。

Runtime 具體都干啥使用?

比如:動態(tài)添加屬性、動態(tài)添加方法、方法交換、字典模型轉(zhuǎn)換

參考文章: http://www.itdecent.cn/p/6fd68ac84701

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

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

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