先看一下下面三行代碼
ZKCPerson *p1 = [ZKCPerson alloc];
ZKCPerson *p2 = [p1 init];
ZKCPerson *p3 = [p1 init];
思考一下:p1 p2 p3是不是同一個(gè)對(duì)象?
debug看一看打印結(jié)果:
20201118153406.jpg
結(jié)果:是一個(gè)
再思考一個(gè)問(wèn)題:這三個(gè)指針地址是不是一樣的呢挖腰?看下打印結(jié)果:
20201118153626.jpg
結(jié)果:不是一個(gè)
思考一個(gè)問(wèn)題:alloc怎么創(chuàng)建的對(duì)象 alloc和init分別做了什么?
是不是瞬間想看看alloc是怎么實(shí)現(xiàn)的呢?不著急椰弊,接下來(lái)介紹三種常用的方法:
-
直接代碼下斷點(diǎn)(連真機(jī),x86模擬器是不行的)(方法:按住ctl進(jìn)入斷點(diǎn))看到的是這個(gè):
20201118155751.jpg
看見了objc_alloc瓤鼻。秉版。。sure 就是這個(gè)茬祷,繼續(xù)下去清焕。。祭犯。
20201118160025.jpg
哈秸妥,看到了在這個(gè)庫(kù)libobjc.A.dylib
-
Xcode左下角找到符號(hào)斷點(diǎn)
20201118160631.jpg
20201118161531.jpg
20201118161703.jpg
哈,也看到了在這個(gè)庫(kù)libobjc.A.dylib
-
匯編
20201118162053.jpg
20201118162319.jpg
繼續(xù)方法1的ctl+in 最后也能看到在這個(gè)庫(kù)libobjc.A.dylib