方法調(diào)用-底層原理分析

近期很多朋友問起這個方法調(diào)用的流程,小編在這里整理了一下:

小編致力于用精簡的語言說明不精簡的問題

一棍好、對象如何找到對象方法來調(diào)用:

  • 對象方法存放在類中,類方法存放在元類(meta class)中允耿。
  • 類調(diào)用的方法借笙,在runtime底層,會把類轉(zhuǎn)化為類對象再調(diào)用方法较锡。
  • 每一個類都有一個方法列表(MethodList)(已實現(xiàn)的方法)业稼。
1.根據(jù)isa指針找到所屬類
2.根據(jù)方法編號在方法列表中找到類中的方法名
3.根據(jù)方法名到方法區(qū)找到方法的實現(xiàn)

二、類如何找到類方法來調(diào)用:

  • 元類保存了類方法列表
  • 元類(meteClass)是類蚂蕴,也是對象
1.根據(jù)所屬類的isa指針找到元類
2.根據(jù)方法編號在類方法列表中找到類中的方法名
3.根據(jù)方法名到方法區(qū)找到方法的實現(xiàn)
4.如果沒有低散,向父元類查找實現(xiàn)

三、方法調(diào)用總流程:

1.在對象自己緩存的方法列表中找方法編號骡楼,根據(jù)編號執(zhí)行其實現(xiàn)
2.沒有熔号,執(zhí)行 ‘一’
3.沒有找到方法編號,說明這個類沒有實現(xiàn)該方法君编,根據(jù)類的isa指針找到父類執(zhí)行‘一’
4.一直到根類也沒有方法編號跨嘉,轉(zhuǎn)向‘調(diào)用未實現(xiàn)方法的攔截’的方法可以在方法里面做處理
5.沒做處理,報錯崩潰
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吃嘿,一起剝皮案震驚了整個濱河市祠乃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兑燥,老刑警劉巖亮瓷,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異降瞳,居然都是意外死亡嘱支,警方通過查閱死者的電腦和手機蚓胸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來除师,“玉大人沛膳,你說我怎么就攤上這事⊙淳郏” “怎么了锹安?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長倚舀。 經(jīng)常有香客問我叹哭,道長,這世上最難降的妖魔是什么痕貌? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任风罩,我火速辦了婚禮,結(jié)果婚禮上舵稠,老公的妹妹穿的比我還像新娘超升。我一直安慰自己,他們只是感情好哺徊,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布廓俭。 她就那樣靜靜地躺著,像睡著了一般唉工。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汹忠,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天淋硝,我揣著相機與錄音,去河邊找鬼宽菜。 笑死谣膳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的铅乡。 我是一名探鬼主播继谚,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阵幸!你這毒婦竟也來了花履?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挚赊,失蹤者是張志新(化名)和其女友劉穎诡壁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荠割,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡妹卿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年旺矾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夺克。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡箕宙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铺纽,到底是詐尸還是另有隱情柬帕,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布室囊,位于F島的核電站雕崩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏融撞。R本人自食惡果不足惜盼铁,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尝偎。 院中可真熱鬧饶火,春花似錦、人聲如沸致扯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抖僵。三九已至鲤看,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耍群,已是汗流浹背义桂。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹈垢,地道東北人慷吊。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像曹抬,于是被迫代替她去往敵國和親溉瓶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

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

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉谤民,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,721評論 0 9
  • Runtime是什么 Runtime 又叫運行時堰酿,是一套底層的 C 語言 API,其為 iOS 內(nèi)部的核心之一赖临,我...
    SuAdrenine閱讀 878評論 0 3
  • 一胞锰、Runtime簡介 Runtime簡稱運行時。OC就是運行時機制兢榨,也就是在運行時候的一些機制嗅榕,其中最主要的是消...
    林安530閱讀 1,067評論 0 2
  • 你有那么好的年紀 為什么不笑得更好看些 愿你足夠強大的那天顺饮,不用被束縛 做你自己想做的事,你就是你凌那,你是自由的 其...
    天真滴孩紙閱讀 213評論 0 0
  • 一直以來帽蝶,感覺自己總是“沒心沒肺”地活著赦肋。可是隨著時間的流逝励稳,人生經(jīng)歷的增加佃乘,越來越發(fā)現(xiàn),可能自己再也回不...
    AaLohchiaoLi閱讀 878評論 0 2