美文网首页
iOS:关于isa指针

iOS:关于isa指针

作者: 春暖花已开 | 来源:发表于2020-08-05 15:10 被阅读0次

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

union isa_t 
{
    Class cls;
    uintptr_t bits;
    struct {
        uintptr_t nonpointer        : 1;
        uintptr_t has_assoc         : 1;
        uintptr_t has_cxx_dtor      : 1;
        uintptr_t shiftcls          : 33; // MACH_VM_MAX_ADDRESS 0x1000000000
        uintptr_t magic             : 6;
        uintptr_t weakly_referenced : 1;
        uintptr_t deallocating      : 1;
        uintptr_t has_sidetable_rc  : 1;
        uintptr_t extra_rc          : 19;
    };
}
说明
    1. nonpointer
      0:代表普通的指针,存储着Class、Meta-Class对象的内存地址;
      1:代表优化过,使用位域存储更多的信息。
    1. has_assoc
      是否有设置过关联对象,如果没有,释放时会更快。
    1. has_cxx_dtor
      是否有C++的析构函数(.cxx_destruct),如果没有,释放时会更快。
    1. shiftcls
      存储着Class、Meta-Class对象的内存地址信息。
    1. magic
      用于在调试时分辨对象是否未完成初始化。
    1. weakly_referenced
      是否有被弱引用指向过,如果没有,释放时会更快。
    1. deallocating
      对象是否正在释放。
    1. extra_rc
      里面存储的值是引用计数器减1。
    1. has_sidetable_rc
      引用计数器是否过大无法存储在isa中,如果为1,那么引用计数会存储在一个叫 SideTable 的类的属性中。

相关文章

  • iOS:关于isa指针

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

  • 4-1 内存管理

    1.内存布局 2.iOS内存管理方案 [isa指针保存了内存管理的信息] 2.iOS内存管理方案 [isa指针...

  • iOS isa指针

    isa 指针,表示这个对象是一个什么类。而 Class 类型, 也就是 struct objc_class * ,...

  • iOS isa指针

    在Objective-C中,任何类的定义都是对象。类和类的实例没有任何本质上的区别。任何对象都有isa指针。 is...

  • iOS - isa指针

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

  • iOS ISA指针

    https://opensource.apple.com/tarballs/objc4/[https://open...

  • iOS:isa指针

    一、联合体 1. 概念 联合体,是一种特殊的数据类型,其目的是节省内存。联合体内部可以定义多种数据类型,但是同一时...

  • iOS面试题:objc中向一个nil对象发送消息将会发生什么?

    原文:iOS面试题大全 首先,需要搞明白2个问题: 什么是isa指针 消息传递机制 isa指针是用于对象指向类对象...

  • runtime面试复习

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

  • 1.8、iOS面试题之语法

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

网友评论

      本文标题:iOS:关于isa指针

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