runtime這個(gè)運(yùn)行機(jī)制桑逝,它基本上是用C和匯編寫的一個(gè)庫
網(wǎng)上文章很多弧圆,引用幾篇好的,寫下關(guān)鍵詞拢蛋,方便自己看桦他,以后有時(shí)間在補(bǔ)全總結(jié)
實(shí)現(xiàn):
編譯器 clang - llvm
源代碼 - 編譯器前端( clang ) - 優(yōu)化器 - 編譯器后端( llvm ) - 機(jī)器碼
runtime庫是在 clang 編譯期去執(zhí)行的,在 clang 和 llvm 之間會(huì)轉(zhuǎn)化為一種 IR 代碼(可以去看 suunyxx 的 clang分享視頻)谆棱,在視頻中提到了 runtime 的橋接快压。
clang視頻:
https://pan.baidu.com/share/home?uk=2885973690#category/type=0
http://blog.sunnyxx.com/2016/08/13/reunderstanding-runtime-0/
原理:
主要就是運(yùn)行時(shí)的消息機(jī)制 [obj message] ,以及可以利用運(yùn)行時(shí)機(jī)制來干嘛,比如 Method Swizzling 垃瞧。
http://southpeak.github.io/2014/10/25/objective-c-runtime-1/
http://southpeak.github.io/2014/10/30/objective-c-runtime-2/
http://southpeak.github.io/2014/11/03/objective-c-runtime-3/
http://southpeak.github.io/2014/11/06/objective-c-runtime-4/
http://southpeak.github.io/2014/11/08/objective-c-runtime-5/
http://southpeak.github.io/2014/11/09/objective-c-runtime-6/
雖然寫的比較早了蔫劣,但是這是我看了網(wǎng)上大部分 runtime 中,講的最細(xì)致的个从,讓我看明白了以前理解的誤區(qū)脉幢。