alloc探索思路

先看一下下面三行代碼
ZKCPerson *p1 = [ZKCPerson alloc];
ZKCPerson *p2 = [p1 init];
ZKCPerson *p3 = [p1 init];
思考一下:p1 p2 p3是不是同一個(gè)對象?

debug看一看打印結(jié)果:


20201118153406.jpg

結(jié)果:是一個(gè)

再思考一個(gè)問題:這三個(gè)指針地址是不是一樣的呢?看下打印結(jié)果:

20201118153626.jpg

結(jié)果:不是一個(gè)

思考一個(gè)問題:alloc怎么創(chuàng)建的對象 alloc和init分別做了什么?

是不是瞬間想看看alloc是怎么實(shí)現(xiàn)的呢?不著急,接下來介紹三種常用的方法:

  • 直接代碼下斷點(diǎn)(連真機(jī),x86模擬器是不行的)(方法:按住ctl進(jìn)入斷點(diǎn))看到的是這個(gè):


    20201118155751.jpg

看見了objc_alloc。。。sure 就是這個(gè),繼續(xù)下去。。。


20201118160025.jpg

哈,看到了在這個(gè)庫libobjc.A.dylib

  • Xcode左下角找到符號斷點(diǎn)


    20201118160631.jpg

    20201118161531.jpg

    20201118161703.jpg

    哈,也看到了在這個(gè)庫libobjc.A.dylib

  • 匯編


    20201118162053.jpg

    20201118162319.jpg

    繼續(xù)方法1的ctl+in 最后也能看到在這個(gè)庫libobjc.A.dylib

未完待續(xù)。。。先關(guān)注一波

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

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

  • 一、探索歷程 思考:從哪里開始探索? -> 對象的初始化?-> [對象 alloc]? 不管三七二十一,既然是探索...
    Gomu_iOS閱讀 552評論 3 2
  • 在我們iOS開發(fā)且使用oc語言開發(fā)中,我們創(chuàng)建對象的既可以使用new,也可以使用alloc和init;但是我們常用...
    大橘豬豬俠閱讀 331評論 1 1
  • 0x000 從哪里入手? 先看看main函數(shù) 0x001 初探? 為什么是 alloc init? alloc i...
    恬甜咖啡糖_0301閱讀 162評論 0 1
  • alloc與init在對象初始化的作用 先列出一段代碼與輸出結(jié)果 輸出結(jié)果 發(fā)現(xiàn)三個(gè)對象都指向同一塊內(nèi)存空間,初步...
    楊奇閱讀 302評論 0 1
  • 久違的晴天,家長會(huì)。 家長大會(huì)開好到教室時(shí),離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,818評論 16 22

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