本篇文章要點
一.如何拿到源碼?
二.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)自己的思維以及探索能力