先看一下下面三行代碼
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





