美文网首页
1.对象原理探究

1.对象原理探究

作者: JoyChenSeven | 来源:发表于2019-12-18 17:56 被阅读0次

alloc 探索

alloc  已经创建了对象 init

alloc  实现 原理  源码实现

介绍三种方式

1、下断点: (xcode 11下亲测) control + in - objc_alloc

2、下符号断点:libobjc.A.dylib` + [NSObject alloc]:

3、汇编 libobjc.A.dylib`objc_alloc:   

可以看出 p1 p2 p3 为同一个对象,但是 &p1 &p2 &p3 是三个不同的指针指向了同一个内存区域,所以是不同的。

libobjc.A.dylib`objc_alloc:   

通过汇编查看

部分开源源码地址 https://opensource.apple.com/tarballs/

objc4-750源码下查看, NSObject.mm 文件中,mm支持c++ 混编

创建对象 申请内存空间 - 指针

x0 寄存器是 第一个参数,返回的时候是返回值的存储地方

通过xcode 11.0 调试,在依次打上如下断点的时候,发现一直在 系统内中alloc,所以我在LGPerson中重写的init 方法打了断点,再程序进入LGPerson 的init 方法后再将下面的断点打开,即可找到LGPerson 的alloc 真实断点。

alloc  是否有创建对象的能力 , 流程返回的时候 x0 就会存储一个指针-申请的内存空间

ro  中包含

word_align 方法, 字节对齐

 x p 以十六进制打印p对象在内存中地址

x/4xg p  指令,将p 的内存地址以8字节为一段形式读出来,共读取了4段

x/4xw p  指令, 将p 的内存地址以4字节为一段形式读出来,共读取了4段

alloc 做了很多事情,而init  只是返回了self ,这里可以为开发者重写 init 方法提供了便利,因为我们会在对象的初始化的时候做一些自己的事情。

而new 方法就是 callAlloc + init  ,就是alloc + init

alloc   ->  _objc_rootAlloc  ->  callAlloc   ->   class_createInstance  ->  _class_createInstanceFromZone  -> calloc   -> initInstanceIsa

po  指令,指的是 expression -o

相关文章

  • 1.对象原理探究

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

  • 初探OC对象原理(三)

    前言: 这是探究OC对象原理的第三章,也是按照对象的 的底层实现原理顺序来进行的。今天我们探究下对象的本质以及一...

  • block底层原理探究(二):内存管理

    前篇block底层原理探究(一):捕获,我们探究了block捕获外部变量的原理;如果block捕获的是对象类型的a...

  • OC对象原理探究-NSObject内存本质

    OC对象原理探究-NSObject内存本质 1.我们都知道我们平时写的objectIve-C代码,底层实现其实都是...

  • 2.对象原理探究

    po 0x0000000000000000 为空是因为sex 属性没有赋值,所以是nil 因为char 是1个字节...

  • 【1】OC对象原理探究

    1)了解OC运行底层入口 通常是直接进入main函数,通过插入断点,在工作台运行bt命令,可以得知线程调用状态,如...

  • OC对象底层原理探究

    1.runtime 是什么?回答:runtime是由C C++ 汇编为oc提供的一套运行时的api 2.以下代码输...

  • OC对象原理探究(上)

    前言:作为一名已经工作5年iOS开发人员,突然发现自己在底层方面的知识是如此的薄弱,甚至对一个APP的启动细节的认...

  • 关联对象底层原理探究

    通常我们会在分类中添加方法,而无法在在分类中添加属性,我们在分类中添加@property(nonatomic, c...

  • OC对象原理探究(上)

    APP启动流程探索 创建空工程代码如下,并且添加符号断点命名如下图 运行工程查看堆栈信息 红色为app启动过程: ...

网友评论

      本文标题:1.对象原理探究

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