isa指针介绍

作者: Peter杰 | 来源:发表于2020-09-24 11:52 被阅读0次

在arm64架构之前,isa就是一个普通的指针,存储着Class、Meta-Class对象的内存地址

从arm64架构开始,对isa进行了优化,变成了一个共用体(union)结构,还使用位域来存储更多的信息

isa指针结构如下图

isa_t
ISA_BITFIELD isa_t简化
ISA_BITFIELD位域
  • 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的类的属性中

Class的结构

  • class_rw_t里面的methods、properties、protocols是二维数组,是可读可写的,包含了类的初始内容、分类的内容
  • class_rw_t里面的methods、properties、protocols是二维数组,是可读可写的,包含了类的初始内容、分类的内容

相关文章

  • isa指针介绍

    在arm64架构之前,isa就是一个普通的指针,存储着Class、Meta-Class对象的内存地址 从arm64...

  • 面试题

    请介绍isa指针,怎么用,用来干嘛? 每一个对象内部都有一个isa指针 对象isa指针就只想它的真实类型dog的i...

  • 每日1道题(day1)

    请介绍一下isa指针,怎么用,用来干嘛? 答:每一个对象内部都有一个isa指针,对象的isa 指针就指向它的真实类...

  • runtime面试复习

    runtime isa指针的含义 分为指针型isa:isa的値代表Class的地址,非指针型isa :isa的値的...

  • 1.8、iOS面试题之语法

    1、isa指针?(对象的isa,类对象的isa,元类的isa都要说) 对象的isa指针指向所属的类 类的isa指针...

  • iOS-浅谈OC中isa和superclass的指针指向

    目录 isa指针----isa指针指向superclass指针----class对象的superclass指针--...

  • iOS NONPOINTER_ISA(非指针类型)

    isa分为POINTER_ISA(指针类型)和NONPOINTER_ISA(非指针类型) POINTER_ISA指...

  • iOS - isa指针

    [toc] 参考 isa指针 isa 简介 isa (is a kind of) 是一个 Class 类型的指针,...

  • 随笔记录(一)、isa 和 superClass

    isa 指针 instance(实例对象) isa 指针,指向的是==类对象==。 class(类对象) isa ...

  • iOS开发中方法查找流程图

    实例对象的isa指针指向类对象,类对象的isa指针指向元类,元类的isa指针指向根元类,根元类的isa指针指向自己...

网友评论

    本文标题:isa指针介绍

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