美文网首页
ISA的初始化&指向分析

ISA的初始化&指向分析

作者: 瞬间完善 | 来源:发表于2019-12-22 19:41 被阅读0次

我们都知道 alloc创建了对象并且分配内存;同时初始化isa属性;我们也知道了OC 对象在底层本质上是结构体,所有的对象里面都会包含有一个isa,isa的定义是一个联合体isa_t,isa_t包含了当前对象指向类的信息

ISA的初始化流程(底层源码)

isa初始化流程

ISA 在Xcode中使用 LLDB指令  指向分析

其中一些LLDB指令:

x/4gx objc 打印objc的4段内存信息。扩展:x/6gx就是打印6段内存信息。

p/t 打印二进制信息;

p/o 打印八进制信息;

p/x 打印十六进制信息;

上面有个问题就是  为什么外面的isa打印出来的是Class?

直接上源码

```

inline Class

objc_object::ISA() 

{

    assert(!isTaggedPointer()); 

#if SUPPORT_INDEXED_ISA

    if(isa.nonpointer) {

        uintptr_t slot = isa.indexcls;

        returnclassForIndex((unsigned)slot);

    }

    return(Class)isa.bits;

#else

    return(Class)(isa.bits&ISA_MASK);

#endif

}

```

以上我们可以看出,我们找isa  通过底层源码之后,最后return的isa都是强转成Class的,所以我们上面打印isa的时候为什么 & 上一个东西,原因就在这。

相关文章

  • 第一天重点图

    一、alloc 二、内存对齐 三、isa的初始化 & 指向分析

  • isa初始化&指向分析

    探索对象与类如何绑定在一起 在objc4的源码中,通过研究alloc的流程就可看到下面的代码 上面的代码我们可以看...

  • isa的初始化&指向分析

    一、isa的初始化 首先从源码中找到类Class的定义和结构 继续找objc_class 继续找objc_obje...

  • isa的初始化&指向分析

    在探索alloc&init一篇中,我们对alloc&init有了初步的了解,其中包括对isa的初始化,本篇我们进一...

  • ISA的初始化&指向分析

    我们都知道 alloc创建了对象并且分配内存;同时初始化isa属性;我们也知道了OC 对象在底层本质上是结构体,所...

  • isa的初始化&指向分析

    在 alloc的初探 中了解了如何获取对象大小,内存对齐的原则,对象的 alloc,但是在调用 calloc 在堆...

  • (三) isa初始化&指向分析

    1. isa初始化 在分析 alloc 的时候跟踪到了_class_createInstanceFromZone,...

  • ios isa的初始化&指向分析

    1.isa结构 在NSObject内会自带一个属性isa,这个isa在底层里其实是一个联合体,其结构如下所示: 其...

  • isa的初始化和指向分析

    isa的初始化 isa的初始化流程代码 问题解释:为什么赋值了cls之后就不赋值bits了? 原因是:isa是一个...

  • iOS - isa的初始化&指向分析

    isa结构及初始化分析 什么是isa,首先我们先看一下isa的结构: 由源码我们可以看出:isa的本质就是一个联合...

网友评论

      本文标题:ISA的初始化&指向分析

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