本文主要介紹iOS探索源碼的三種方式:
-
符號(hào)斷點(diǎn)直接跟流程 - 通過按住
control+step into - 匯編跟流程
下面詳細(xì)描述三種探索源碼的方式:
1. 符號(hào)斷點(diǎn)直接跟流程
由于是alloc方法的實(shí)現(xiàn)無法看到,故下一個(gè)'alloc'的符號(hào)斷點(diǎn)。

添加符號(hào)斷點(diǎn)
在
SLPerson創(chuàng)建的行添加一個(gè)斷點(diǎn),同時(shí)暫時(shí)取消剛剛添加的alloc的斷點(diǎn),運(yùn)行工程~
斷點(diǎn)
此時(shí)打開
alloc的符號(hào)斷點(diǎn),點(diǎn)擊Continue program execution過掉斷點(diǎn),可以看到程序斷點(diǎn)在了libobjc.A.dylib中的[NSObject alloc]方法,由此可知alloc方法的源碼在libobjc.A.dylib庫(kù)中。
libobjc.A.dylib
2. 通過按住control + step into
在SLPerson創(chuàng)建的行添加一個(gè)斷點(diǎn),運(yùn)行工程,當(dāng)進(jìn)入斷點(diǎn)后按住control鍵,點(diǎn)擊step into按鈕~

step into
進(jìn)入斷點(diǎn)后看到以下內(nèi)容

斷點(diǎn)
根據(jù)顯示再下一個(gè)
objc_alloc的符號(hào)斷點(diǎn)后點(diǎn)擊Continue program execution按鈕過掉當(dāng)前斷點(diǎn),可以看到進(jìn)入了libobjc.A.dylib中的objc_alloc函數(shù),由此可知alloc方法的源碼在libobjc.A.dylib庫(kù)中。
斷點(diǎn)
3. 匯編跟流程
在SLPerson創(chuàng)建的行添加一個(gè)斷點(diǎn),運(yùn)行工程,當(dāng)進(jìn)入斷點(diǎn)后選擇Xcode的Debug菜單中的Debug Workflow中的Always show disassembly選項(xiàng)

Always show disassembly
可以看到斷點(diǎn)變成了如下模樣

斷點(diǎn)
根據(jù)顯示再下一個(gè)
objc_alloc的符號(hào)斷點(diǎn)后點(diǎn)擊Continue program execution按鈕過掉當(dāng)前斷點(diǎn),可以看到進(jìn)入了libobjc.A.dylib中的objc_alloc函數(shù),由此可知alloc方法的源碼在libobjc.A.dylib庫(kù)中。
斷點(diǎn)
Apple開源源碼下載地址
1、Apple所有開源源碼匯總地址,根據(jù)相應(yīng)的版本查找對(duì)應(yīng)的源碼,以mac 10.15為例:macOS --> 10.15 --> 10.15 --> 搜索objc
2、Apple比較直接的源碼下載地址,直接搜索庫(kù)名即可,例如command+f輸入objc,選擇objc4 --> 選擇所需版本