runtime底層之a(chǎn)lloc的底層探究

我們?cè)谌粘i_發(fā)中都知道alloc的功能是給對(duì)象來分配內(nèi)存的告材,但是具體底層怎么實(shí)現(xiàn)很少有人去探究,接下來我們通過源碼加匯編的結(jié)合來分析alloc的底層實(shí)現(xiàn)通贞。

在學(xué)習(xí)alloc之前要知道一下runtime是什么搞监,runtime的字面意思是運(yùn)行時(shí),runtime具體是指由C满葛、C++径簿、匯編實(shí)現(xiàn)的一套API,從OC到C語(yǔ)言的過渡增加了運(yùn)行時(shí)功能嘀韧。

一篇亭、給alloc添加斷點(diǎn)調(diào)試:

首先以一個(gè)Person的類為例來講:

Person *obj = [Person alloc];

調(diào)用alloc方法,實(shí)際上是runtime使用objc_msgSend進(jìn)行消息轉(zhuǎn)發(fā)來實(shí)現(xiàn)的方法锄贷,接下來來給alloc加上一個(gè)全局?jǐn)帱c(diǎn):

alloc的全局?jǐn)帱c(diǎn)

二译蒂、一步步分析objc源碼

運(yùn)行應(yīng)用斷點(diǎn)會(huì)來到alloc的匯編分析:

alloc的匯編分析

從這兩行匯編代碼中可以看出來曼月,alloc實(shí)際上調(diào)用的是libobjc里的_objc_rootAlloc方法,接下來查看官方objc源碼(蘋果官網(wǎng)opensource里下載)來找到這個(gè)方法.

alloc方法

從alloc源碼方法里可以看到跟在匯編里調(diào)用的方法都是_objc_rootAlloc柔昼,接下來再進(jìn)去_objc_rootAlloc方法看:

_objc_rootAlloc方法

由上可以看到_objc_rootAlloc方法的返回值有個(gè)callAlloc,繼續(xù)點(diǎn)進(jìn)去會(huì)進(jìn)去callAlloc方法哑芹,接下來會(huì)走:

callAlloc方法實(shí)現(xiàn)
返回實(shí)例對(duì)象

三、最終實(shí)現(xiàn)

此時(shí)的obj這個(gè)返回值已經(jīng)是我們需要的實(shí)例對(duì)象了捕透,它是通過class_createInstance方法來實(shí)現(xiàn)聪姿,class_createInstance最終會(huì)調(diào)用initIsa來創(chuàng)建實(shí)例對(duì)象并返回;

initIsa

最終alloc的作用是通過類來創(chuàng)建實(shí)例對(duì)象乙嘀。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末末购,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乒躺,更是在濱河造成了極大的恐慌招盲,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘉冒,死亡現(xiàn)場(chǎng)離奇詭異曹货,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)讳推,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門顶籽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人银觅,你說我怎么就攤上這事礼饱。” “怎么了究驴?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵镊绪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我洒忧,道長(zhǎng)蝴韭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任熙侍,我火速辦了婚禮榄鉴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛉抓。我一直安慰自己庆尘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布巷送。 她就那樣靜靜地躺著驶忌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惩系。 梳的紋絲不亂的頭發(fā)上位岔,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天如筛,我揣著相機(jī)與錄音,去河邊找鬼抒抬。 笑死杨刨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的擦剑。 我是一名探鬼主播妖胀,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼惠勒!你這毒婦竟也來了赚抡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纠屋,失蹤者是張志新(化名)和其女友劉穎涂臣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體售担,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赁遗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了族铆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岩四。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哥攘,靈堂內(nèi)的尸體忽然破棺而出剖煌,到底是詐尸還是另有隱情,我是刑警寧澤逝淹,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布耕姊,位于F島的核電站,受9級(jí)特大地震影響栅葡,放射性物質(zhì)發(fā)生泄漏箩做。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一妥畏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧安吁,春花似錦醉蚁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至妇智,卻和暖如春滥玷,著一層夾襖步出監(jiān)牢的瞬間氏身,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工惑畴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛋欣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓如贷,卻偏偏與公主長(zhǎng)得像陷虎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杠袱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉尚猿,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,715評(píng)論 0 9
  • 本文基于對(duì)象的實(shí)現(xiàn)原理來深入剖析 OC 的底層相關(guān)原理。這里并不會(huì)簡(jiǎn)單的介紹純理論知識(shí)楣富,而是借助工具和編碼實(shí)現(xiàn)相關(guān)...
    steveyoung閱讀 1,045評(píng)論 2 5
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • I remember when I first found out I was going to speak at...
    一夜讀閱讀 613評(píng)論 0 0
  • 怪我沒用凿掂,始終放不下你 沒能把你遺忘...我不知道你們有沒有這樣一種想法和一個(gè)人分手后,很久后都不能釋懷 纹蝴,感覺身...
    大魚禾閱讀 747評(píng)論 0 1