在 Objective-C 的旧版本中,objc_class 结构体是这样实现的:
struct objc_class {
Class isa;
Class super_class;
const char *name;
long version;
long info;
long instance_size;
struct objc_ivar_list *ivars;
struct objc_method_list **methodLists;
struct objc_cache *cache;
struct objc_protocol_list *protocols;
};
因此,表示对象的结构存储了指向对象类的指针,指向对象超类的指针,对象的类名,对象的版本,信息和实例大小,对象的实例变量列表,对象的方法列表,对象的缓存和对象的协议列表。结构中代表对象的这些字段的存在是很容易理解的,因为它们中的每一个都存储有关对象的信息。
然而,相同结构 objc_class 的 Objective-C 2.0 实现是这样的:
struct objc_class {
Class isa;
};
因此,在这个版本的 objc_class 中,结构中只有一个字段:指向对象的类结构的指针。
那么,我的问题是,关于对象的其他信息如何存储在 Objective-C 2.0 中,因为结构中只有一个字段表示对象?