與Runtime相關(guān)的知識

網(wǎng)上的知識很多系羞,但是知識只有自己過一遍才有意義吞加。

關(guān)于消息發(fā)送和消息轉(zhuǎn)發(fā)穴店,Objective-C 消息發(fā)送與轉(zhuǎn)發(fā)機制原理講的很詳細燥翅。
同時還有這幾篇神經(jīng)病院 Objective-C Runtime 入院第一天—— isa 和 Class神經(jīng)病院 Objective-C Runtime 住院第二天——消息發(fā)送與轉(zhuǎn)發(fā)鸟蟹,
神經(jīng)病院 Objective-C Runtime 出院第三天——如何正確使用 Runtime乌妙,

Runtime又叫運行時,是一套底層的C語言API建钥,是iOS系統(tǒng)的核心之一藤韵。開發(fā)者在編碼過程中,可以給任意一個對象發(fā)送消息熊经,在編譯階段只是確定了要向接受者發(fā)送這條消息荠察,而接受者將要如何響應(yīng)和處理這條消息,那就要看運行時來決定了奈搜。
SEL類成員方法的指針,但不同于C語言中的函數(shù)指針盯荤,函數(shù)指針直接保存了方法的地址馋吗,但SEL只是方法編號
IMP一個函數(shù)指針,保存了方法的地址秋秤。
IMP和SEL關(guān)系:
每一個繼承于NSObject的類都能自動獲得runtime的支持宏粤。在這樣的一個類中,有一個isa指針灼卢,指向該類定義的數(shù)據(jù)結(jié)構(gòu)體绍哎,這個結(jié)構(gòu)體是由編譯器編譯時為類(需繼承于NSObject)創(chuàng)建的,在這個結(jié)構(gòu)體中有包括了指向其父類類定義的指針以及SEL和IMP的對應(yīng)表鞋真。


屏幕快照 2019-08-07 下午2.22.36.png

消息發(fā)送是runtime通過selector快速查找IMP的過程崇堰,有了函數(shù)指針就可以執(zhí)行對應(yīng)的方法實現(xiàn),消息轉(zhuǎn)發(fā)是在查找IMP失敗后執(zhí)行一系列轉(zhuǎn)發(fā)流程的慢速通道涩咖,如果不做轉(zhuǎn)發(fā)處理海诲,則會拋出異常。

消息發(fā)送與轉(zhuǎn)發(fā)路徑流程圖.jpg

在Effective Objective-C 2.0上有一張圖很好的解釋了消息轉(zhuǎn)發(fā)


屏幕快照 2019-08-06 下午4.17.28.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檩互,一起剝皮案震驚了整個濱河市特幔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闸昨,老刑警劉巖蚯斯,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄风,死亡現(xiàn)場離奇詭異,居然都是意外死亡拍嵌,警方通過查閱死者的電腦和手機遭赂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撰茎,“玉大人嵌牺,你說我怎么就攤上這事×浜” “怎么了逆粹?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炫惩。 經(jīng)常有香客問我僻弹,道長,這世上最難降的妖魔是什么他嚷? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任蹋绽,我火速辦了婚禮,結(jié)果婚禮上筋蓖,老公的妹妹穿的比我還像新娘卸耘。我一直安慰自己,他們只是感情好粘咖,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布蚣抗。 她就那樣靜靜地躺著,像睡著了一般瓮下。 火紅的嫁衣襯著肌膚如雪翰铡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天讽坏,我揣著相機與錄音锭魔,去河邊找鬼。 笑死路呜,一個胖子當著我的面吹牛迷捧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胀葱,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼党涕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巡社?” 一聲冷哼從身側(cè)響起膛堤,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晌该,沒想到半個月后肥荔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绿渣,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年燕耿,在試婚紗的時候發(fā)現(xiàn)自己被綠了中符。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡誉帅,死狀恐怖淀散,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚜锨,我是刑警寧澤档插,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站亚再,受9級特大地震影響郭膛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氛悬,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一则剃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧如捅,春花似錦棍现、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烈涮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窖剑,已是汗流浹背坚洽。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留西土,地道東北人讶舰。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像需了,于是被迫代替她去往敵國和親跳昼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 我們常常會聽說 Objective-C 是一門動態(tài)語言肋乍,那么這個「動態(tài)」表現(xiàn)在哪呢鹅颊?我想最主要的表現(xiàn)就是 Obje...
    Ethan_Struggle閱讀 2,182評論 0 7
  • 繼上Runtime梳理(四) 通過前面的學習,我們了解到Objective-C的動態(tài)特性:Objective-C不...
    小名一峰閱讀 744評論 0 3
  • 本文詳細整理了 Cocoa 的 Runtime 系統(tǒng)的知識墓造,它使得 Objective-C 如虎添翼堪伍,具備了靈活的...
    lylaut閱讀 795評論 0 4
  • 本文轉(zhuǎn)載自:http://yulingtianxia.com/blog/2014/11/05/objective-...
    ant_flex閱讀 749評論 0 1
  • 本文轉(zhuǎn)載自:http://southpeak.github.io/2014/11/03/objective-c-r...
    idiot_lin閱讀 375評論 0 0