一、? 在開發(fā)中我們總會遇到,當涉及到一些底層代碼時,往往無法深入了解,比如我們熟悉的alloc方法

這個時候,直接去上蘋果的開源網站?https://opensource.apple.com/,跟著我一步步把需要了解的源碼下載下來

1.當前最新的源碼是11.3,我們點擊打開

2.按住cmd + F,搜索objc

3.點擊打開,發(fā)現(xiàn)Error,可能是官方還沒更新,沒辦法,還是按照前面1、2步,我們打開11.2的

4.成功打開后,可以看到里面的內容

5.返回上一頁,我們直接下載下來

6.下載完成,打開工程

7.全局搜索"alloc {" ,好吧,終于出來,現(xiàn)在開始探索alloc究竟做了什么吧

二、開始探索

逐級往下查看
_objc_rootAlloc? ?>? ?callAlloc? ,發(fā)現(xiàn)callAlloc方法出現(xiàn)分歧

既然知道源碼調用的方法,我們創(chuàng)建一個項目和一個類,并對alloc進行調用,然后在此處打上斷點,

然后,使用symbolic打斷點,將源碼里的方法復制粘貼進去

接著,調試模式設置成匯編模式,然后運行項目

結果發(fā)現(xiàn)先走了?_objc_rootAllocWithZone ,然后在走 objc_msgSend

繼續(xù),回到蘋果源碼,從_objc_rootAllocWithZone往下走 ,最終來到_class_createInstanceFromZone方法

_class_createInstanceFromZone 做的事情比較多,不是今天的主題
結論:今天的探索可以得出alloc大概流程
