iOS-底层原理 01 对象创建流程

197 阅读1分钟

如何探索底层源码

从苹果官网获取oc底层源码,加入到工程中,就可以查看对应的源码。参考 cooci老师 的分享

alloc流程

1.底层源码加入成功之后,搜索alloc,查看alloc源码

截屏2021-06-07 下午5.24.46.png

2.进入_objc_rootAlloc方法

截屏2021-06-07 下午5.20.57.png

3.进入callAlloc方法,这里有一些判断,主要是判断是否有可重用的方法吧

截屏2021-06-07 下午5.38.48.png

4.进入到_class_createInstanceFromZone方法

这里主要做了三件事:

  • 计算类大小(使用了属性字节的对齐方法,增加存取的效率)
  • 开辟内存空间
  • 关联该类

截屏2021-06-07 下午5.44.26.png

init方法做了什么

如图所示,返回了自己,说明并没有重新创建一个新的对象。

截屏2021-06-07 下午5.45.16.png

验证一下如下图

截屏2021-06-07 下午5.50.56.png

new方法做了什么

如图所示,调用了 alloc 和 init方法。采用new的方式只能采用默认的init方法完成初始化,采用alloc的方式可以用其他定制的初始化方法 截屏2021-06-07 下午5.53.12.png

这个哥们写的更详细