本文主要介紹iOS探索源碼的三種方式:
-
符號(hào)斷點(diǎn)
直接跟流程 - 通過(guò)按住
control
+step into
- 匯編跟流程
下面詳細(xì)描述三種探索源碼的方式:
1. 符號(hào)斷點(diǎn)
直接跟流程
由于是alloc
方法的實(shí)現(xiàn)無(wú)法看到,故下一個(gè)'alloc'
的符號(hào)斷點(diǎn)竭贩。
在
SLPerson
創(chuàng)建的行添加一個(gè)斷點(diǎn)忆绰,同時(shí)暫時(shí)取消剛剛添加的alloc
的斷點(diǎn),運(yùn)行工程~此時(shí)打開(kāi)
alloc
的符號(hào)斷點(diǎn)致开,點(diǎn)擊Continue program execution
過(guò)掉斷點(diǎn),可以看到程序斷點(diǎn)在了libobjc.A.dylib
中的[NSObject alloc]
方法,由此可知alloc
方法的源碼在libobjc.A.dylib
庫(kù)中。2. 通過(guò)按住control
+ step into
在SLPerson
創(chuàng)建的行添加一個(gè)斷點(diǎn)呻惕,運(yùn)行工程,當(dāng)進(jìn)入斷點(diǎn)后按住control
鍵,點(diǎn)擊step into
按鈕~
進(jìn)入斷點(diǎn)后看到以下內(nèi)容
根據(jù)顯示再下一個(gè)
objc_alloc
的符號(hào)斷點(diǎn)后點(diǎn)擊Continue program execution
按鈕過(guò)掉當(dāng)前斷點(diǎn)蓖议,可以看到進(jìn)入了libobjc.A.dylib
中的objc_alloc
函數(shù),由此可知alloc
方法的源碼在libobjc.A.dylib
庫(kù)中瘸彤。3. 匯編跟流程
在SLPerson
創(chuàng)建的行添加一個(gè)斷點(diǎn)修然,運(yùn)行工程愕宋,當(dāng)進(jìn)入斷點(diǎn)后選擇Xcode
的Debug
菜單中的Debug Workflow
中的Always show disassembly
選項(xiàng)
可以看到斷點(diǎn)變成了如下模樣
根據(jù)顯示再下一個(gè)
objc_alloc
的符號(hào)斷點(diǎn)后點(diǎn)擊Continue program execution
按鈕過(guò)掉當(dāng)前斷點(diǎn),可以看到進(jìn)入了libobjc.A.dylib
中的objc_alloc
函數(shù)挡毅,由此可知alloc
方法的源碼在libobjc.A.dylib
庫(kù)中庆械。Apple開(kāi)源源碼下載地址
1、Apple所有開(kāi)源源碼匯總地址菌赖,根據(jù)相應(yīng)的版本查找對(duì)應(yīng)的源碼堕绩,以mac 10.15為例:macOS --> 10.15 --> 10.15 --> 搜索objc
2、Apple比較直接的源碼下載地址邑时,直接搜索庫(kù)名即可奴紧,例如command+f
輸入objc
,選擇objc4 --> 選擇所需版本