本篇文章要点
一.如何拿到源码?
二.alloc做了什么?
三.init做了什么?
一、如何拿到源码
苹果是有部分代码开源的 开源地址:https://opensource.apple.com/tarballs
1. 首先 我们需要在开源地址拿到NSObject源码 objc4/->objc4-750.tar.gz 下载即可(版本自行选择)这样源码就拿到手了
2.注意 我们拿到的源码是跑不起来的 需要做一些配置 接下来我们就可以打开工程找到NSObject.h 找到alloc 、init进行探索了
二、alloc做了什么?
1.首先 我们进入实现文件 发现NSObject.mm是个.mm文件 也就是文件中有C++代码 由此看来NSObject.mm是由OC、C、C++混编的
2.接下来我们看一下alloc 源码流程
总结:以上为alloc的一条主流程 重点都在上图标记的两个方法 也就是说alloc 其实就是像系统申请了一块内存空间 并把开辟的空间和当前调用alloc的类绑定
三、init做了什么?
1.我们看一下init源码流程
总结:init方法什么都没有做 其实init方法只是一个工厂设计 交给子类自定义重写用的
结语
其实alloc流程并非这么简单 我们也没有必要去掌握源码每一个细节 看源码重要的是培养自己的思维以及探索能力