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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月21日 18时37分10秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
APP设计灵感|高颜值时钟页面!让每一秒都过得有意义
2019-04-29
值得电商美工借鉴的购物APP页面设计,让人无法自拔
2019-04-29
电商产品页多种出彩表现设计手法!
2019-04-29
分布式与集成
2019-04-29
C#SUM函数改变数据精度问题
2019-04-29
机器翻译/注意力机制
2019-04-29
Transformer介绍
2019-04-29
SpringMVC异常处理之第三种:ExceptionHandler注解
2019-04-29
如何通过Eclipse来创建SpringBoot项目?
2019-04-29
Spring中 JavaConfig和常见注解
2019-04-29
SpringBoot启动类注解简要介绍
2019-04-29
Spring Boot扩展启动行为-改变启动Banner
2019-04-29
如何通过设置setting加快Maven 及更新SpringBoot项目的速度
2021-07-02
如何设置Spring Boot热部署
2021-07-02
Spring Boot整合Web开发-JSON
2021-07-02
Spring Boot整合Web开发-如何集合模板Thymeleaf?
2021-07-02
Spring Boot整合Web开发-freemarker
2021-07-02
Spring Boot整合Web开发之如何集成JSP
2021-07-02
全局异常处理之自定义全局错误页面、404及500错误页面
2021-07-02