alloc探索思路

先看一下下面三行代码
ZKCPerson *p1 = [ZKCPerson alloc];
ZKCPerson *p2 = [p1 init];
ZKCPerson *p3 = [p1 init];
思考一下:p1 p2 p3是不是同一个对象?

debug看一看打印结果:


20201118153406.jpg

结果:是一个

再思考一个问题:这三个指针地址是不是一样的呢?看下打印结果:

20201118153626.jpg

结果:不是一个

思考一个问题:alloc怎么创建的对象 alloc和init分别做了什么?

是不是瞬间想看看alloc是怎么实现的呢?不着急,接下来介绍三种常用的方法:

  • 直接代码下断点(连真机,x86模拟器是不行的)(方法:按住ctl进入断点)看到的是这个:


    20201118155751.jpg

看见了objc_alloc。。。sure 就是这个,继续下去。。。


20201118160025.jpg

哈,看到了在这个库libobjc.A.dylib

  • Xcode左下角找到符号断点


    20201118160631.jpg

    20201118161531.jpg

    20201118161703.jpg

    哈,也看到了在这个库libobjc.A.dylib

  • 汇编


    20201118162053.jpg

    20201118162319.jpg

    继续方法1的ctl+in 最后也能看到在这个库libobjc.A.dylib

未完待续。。。先关注一波

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

  • 一、探索历程 思考:从哪里开始探索? -> 对象的初始化?-> [对象 alloc]? 不管三七二十一,既然是探索...
    Gomu_iOS阅读 3,375评论 3 2
  • 在我们iOS开发且使用oc语言开发中,我们创建对象的既可以使用new,也可以使用alloc和init;但是我们常用...
    大橘猪猪侠阅读 2,444评论 1 1
  • 0x000 从哪里入手? 先看看main函数 0x001 初探? 为什么是 alloc init? alloc i...
    恬甜咖啡糖_0301阅读 1,265评论 0 1
  • alloc与init在对象初始化的作用 先列出一段代码与输出结果 输出结果 发现三个对象都指向同一块内存空间,初步...
    杨奇阅读 1,850评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,218评论 16 22

友情链接更多精彩内容