iOS底层- alloc 原理探索
发布日期:2021-06-29 05:05:57 浏览次数:2 分类:技术文章

本文共 625 字,大约阅读时间需要 2 分钟。

 


前言

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执行的流程图:

 

转载地址:https://blog.csdn.net/zhaoqin3669/article/details/117660903 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Mac 电脑 显示和隐藏文件
下一篇:Mac GitBook的安装流程

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月21日 18时37分10秒