iOS 探索alloc的底層流程

一、? 在開發(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大概流程

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

相關閱讀更多精彩內容

  • 一、 OC的alloc初探 代碼準備,我們先對一個類alloc一個對象出來 在這里下好斷點,打開匯編調試(Debu...
    Johnny_Z閱讀 663評論 1 6
  • OC 是面向對象的語言,開發(fā)中一切的基礎,首先需要一個對象,??,沒有的話,可以 alloc 一個。這篇文章就記錄一...
    loongod閱讀 1,103評論 1 5
  • alloc底層原理探索 為什么要alloc底層探索?在我們開發(fā)中經常用到[xxx alloc],但是我知道做了什么...
    20cce19871e2閱讀 343評論 1 1
  • 探索的準備工作 準備好objc-781編譯成功的源碼工程; 新建調試Target -> YYTest; 在YYTe...
    YanZi_33閱讀 251評論 0 0
  • 在我們iOS開發(fā)且使用oc語言開發(fā)中,我們創(chuàng)建對象的既可以使用new,也可以使用alloc和init;但是我們常用...
    大橘豬豬俠閱讀 336評論 1 1

友情鏈接更多精彩內容