01 探索源碼的三種方式

本文主要介紹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)后選擇XcodeDebug菜單中的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 --> 選擇所需版本

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

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

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