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.首先 我们进入实现文件 发现NSObject.mm是个.mm文件 也就是文件中有C++代码  由此看来NSObject.mm是由OC、C、C++混编的

2.接下来我们看一下alloc 源码流程


总结:以上为alloc的一条主流程  重点都在上图标记的两个方法 也就是说alloc 其实就是像系统申请了一块内存空间 并把开辟的空间和当前调用alloc的类绑定 

三、init做了什么?

1.我们看一下init源码流程


总结:init方法什么都没有做 其实init方法只是一个工厂设计 交给子类自定义重写用的

结语

其实alloc流程并非这么简单  我们也没有必要去掌握源码每一个细节  看源码重要的是培养自己的思维以及探索能力

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。