前言
iOS开发就业环境的要求越来越高,不只是一点UI层面的皮毛而已,更多的考虑的软件的性能,设计性能方面,就要考察更多的iOS底层的知识。特别是面试环节,基本都从底层考察。我们创建一个对象都是从alloc 开始的,平时开发创建对象如下图:
下面是具体打印的内容:
从打印内容来看, p1,p2,p3对象地址是一样的。但是对应的指针打印出的地址是不一样的。因为alloc方法在开辟了一块内存空间,init并没有这个功能。所以三个对象指向了同一个内存地址空间。
一、开始调试之旅?三种方法
1.断点调试
在要调试的代码前面,打上断点,运行之后会停顿在断点出,接下来按ctrl+step(红色键)出现以下调试界面
2、符号断点
步骤1:
步骤2:
运行程序后:
3、汇编跟踪
进入之后的页面,并通过下一步进行调试
二、源码探索
1、我们怎么获取源码
源码下载地址:苹果官网,如下图选择最新的:
有了源码之后,我们就可以探究alloc底层是怎么工作的。怎么调试源码具体参考:可参考大神的文章
2.我下载的是818.2版本,本地是配置好的,可运行。接下来我们创建一个对象,使用alloc方法一步步调试步骤如下图:
2.1
2.2
2.3
2.4
2.5
2.5图有个方法(cls->instanceSize(extraBytes))要截图说明一下方便大家理解,主要是内存分配的空间大小,都是按16个字节对齐一种算法如下图:
通过以上2.1-2.5断点调试得出alloc执行的流程图: