指针

作者: Abner_XuanYuan | 来源:发表于2023-05-28 20:33 被阅读0次

1、isa 指针

在 arm64 架构之前,isa 就是一个普通的指针,存储着 Class、Meta-Class 对象的内存地址。从 arm64 架构开始,对 isa 进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多的信息。
共用体:共用同一块内存。

2、结构

isa 指针结构
参数解析:
bits:用来存储 struct 里面所有参数的数据。此处的 struct 只是用来注释说明 bits 中存放的哪些内容,可以省略不写。struct 中的后面的参数(如::1),表示占用多少位。
nonpointer:0 代表普通的指针,存储着 Class、Meta-Class 对象的内存地址;1 代表优化过,使用位域存储更多的信息。
has_assoc:是否有设置过关联对象,如果没有,释放时会更快。
has_cxx_dtor:是否有 C++ 的析构函数(.cxx_destruct),如果没有,释放时会更快。
shiftcls:存储着 Class、Meta-Class 对象的内存地址信息。
magic:用于在调试时分辨对象是否未完成初始化。
weakly_referenced:是否有被弱引用指向过,如果没有,释放时会更快。
deallocating:对象是否正在释放。
extra_rc:里面存储的值是引用计数器减1。
has_sidetable_rc:引用计数器是否过大无法存储在 isa 中。如果为1,那么引用计数会存储在一个叫 SideTable 的类的属性中。

3、问与答

1、对象的 isa 指针指向哪里?

instance 对象的 isa 指针指向 class 对象;
class 对象的 isa 指针指向 meta_class 对象;
meta_class 对象的 isa 指针指向基类的 meta_class 对象。

2、isa、 superclass 指针
对象、类与元类关系图

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针

    普通指针指针的指针 数组指针 函数指针

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • 二、C语言基础

    A、指针 指针的概念:指针变量 和 指针 的区别 ?答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存...

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • NDK02

    指针 指针概念 1 .指针变量和指针的区别?答: 指针变量是定义指针的标记,指针就是指向的内存地址。2 .函数指针...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

网友评论

      本文标题:指针

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