Objective-C 對象alloc、init探索

本篇文章要點

一.如何拿到源碼?

二.alloc做了什么?

三.init做了什么?


一、如何拿到源碼

? ? 蘋果是有部分代碼開源的 開源地址:https://opensource.apple.com/tarballs

? ?1. 首先 我們需要在開源地址拿到NSObject源碼 objc4/->objc4-750.tar.gz?下載即可(版本自行選擇)這樣源碼就拿到手了


2.注意 我們拿到的源碼是跑不起來的 需要做一些配置 接下來我們就可以打開工程找到NSObject.h ?找到alloc 、init進行探索了


二、alloc做了什么?

1.首先 我們進入實現(xiàn)文件 發(fā)現(xiàn)NSObject.mm是個.mm文件 也就是文件中有C++代碼 ?由此看來NSObject.mm是由OC、C、C++混編的

2.接下來我們看一下alloc 源碼流程


總結(jié):以上為alloc的一條主流程 ?重點都在上圖標記的兩個方法 也就是說alloc 其實就是像系統(tǒng)申請了一塊內(nèi)存空間 并把開辟的空間和當(dāng)前調(diào)用alloc的類綁定?

三、init做了什么?

1.我們看一下init源碼流程


總結(jié):init方法什么都沒有做 其實init方法只是一個工廠設(shè)計 交給子類自定義重寫用的

結(jié)語

其實alloc流程并非這么簡單 ?我們也沒有必要去掌握源碼每一個細節(jié) ?看源碼重要的是培養(yǎng)自己的思維以及探索能力

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

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