美文网首页
alloc探索思路

alloc探索思路

作者: 扫地僧练级 | 来源:发表于2020-11-18 16:44 被阅读0次
先看一下下面三行代码
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

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

相关文章

  • alloc探索思路

    先看一下下面三行代码 思考一下:p1 p2 p3是不是同一个对象? debug看一看打印结果: 结果:是一个 再思...

  • iOS底层原理-alloc探索思路

    本文主要介绍介绍三种方式探索alloc源码 1.下断点按住 control + step into main中的L...

  • alloc底层原理探索流程

    alloc底层原理探索 为什么要alloc底层探索?在我们开发中经常用到[xxx alloc],但是我知道做了什么...

  • iOS - alloc & init探索(二)

    alloc 源码探索 alloc底层调用顺序: alloc的核心方法 _class_createInstanceF...

  • alloc探索

    alloc初探 我们运行如下代码: 通过控制台,我们可以看到打印结果如下: 可以看到打印的是同一个对象,不同的只是...

  • alloc探索

    alloc流程: 系统级别就把NSObject的初始化做了,所以NSObject的alloc的调用关系是: all...

  • iOS 底层探索 - 类

    iOS 底层探索系列iOS 底层探索 - alloc & initiOS 底层探索 - calloc 和 is...

  • OC底层原理系列文集

    1、对象底层之alloc&init&new源码分析+三种探索方式OC底层原理01-alloc流程探索[https:...

  • iOS 底层探索03-内存对齐

    在iOS 底层探索02-alloc/init/new 探索提到了alloc 流程中涉及的一个重要方法:instan...

  • 1.对象原理探究

    alloc 探索 alloc 已经创建了对象 init alloc 实现 原理 源码实现 介绍三种方式 1、下断点...

网友评论

      本文标题:alloc探索思路

      本文链接:https://www.haomeiwen.com/subject/rryciktx.html