OC类的原理探究(一)
对象原理探究(一) 对象原理探究(二) 前面两篇文章介绍了OC对象的原理,以及一些分析的思路和方法,今天开始,将开启类的原理探究。 不过在探究类的原理之前,我想补充说明一个东西 isa指针定义如下: union isa_t { isa_t () { } isa_t ( uintptr_t value) : bits(value) { } Class cls; uintptr_t bits; # if defined(ISA_BITFIELD) struct { ISA_BITFIELD; // defined in isa.h }; # endif }; isa指针分为nonpointer指针和非nonpointer指针 。 非nonpointer指针没有经过优化,它里面只通过 cls 属性存储对应的类的地址; nonpointer指针是经过优化的,它通过 bits 存储很多信息。 需要注意的是, cls 和 bits 是互斥的: 非nonpointer指针只使用到 cls ,而nonpointer指针只使用到 bits 。 我们前面也讲到,nonpointer的isa指针可以存储很多额外信息,并且其存储信息的内存布局是跟架构有关的,下面这张图可以很形象地将该布局给展示出来: 类的结构分析 类是使用Class来接收 ,这一点我们在开发中已经非常熟悉了。所以关于类的结构分析