isa—联合体位域

objc源码

iOS是小端模式 读取的时候 一个变量一个变量从右往左读

(nonpointer:1 + has_assoc:1 + has_cxx_dtor:1) & (shiftcls:44) &(magic:6+ weakly_referenced:1+unused:1+has_sidetable_rc;1+extra_rc:8)

nonpointer:表示是否对 isa 指针开启指针优化

has_assoc:关联对象标志位,0没有,1存在

has_cxx_dtor:该对象是否有 C++ 或者 Objc 的析构器,如果有析构函数,则需要做析构逻辑, 如果没有,则可以更快的释放对象

shiftcls: 存储类指针的值。开启指针优化的情况下,在 arm64 架构中有 33 位⽤来存储类指针。

magic:⽤于调试器判断当前对象是真的对象还是没有初始化的空间

weakly_referenced:志对象是否被指向或者曾经指向⼀个 ARC 的弱变量,没有弱引⽤的对象可以更快释放。

deallocating:标志对象是否正在释放内存

extra_rc:当表示该对象的引⽤计数值,实际上是引⽤计数值减 1

你可能感兴趣的:(isa—联合体位域)