这个
isa
指针(读取:
是一个
)指向
类型信息
而不是它的
状态
(也称为所有IVaR的值集)。因此,对于同一类的两个对象(包括类对象),
isa公司
指向相同的类型信息(类)。该类型信息是类型的一般描述(包括哪些方法,存在哪些IVAR),但不是实际值(也称为状态)。
instance i in memory
i+00 isa pointer // points to the type, equal for all instances of a class
i+04 value of the 1st ivar // different for every instance
i+08 value of the 2nd ivar // "
â¦
因此,当从系统中获取实例的内存时,它不仅仅是
objc_object
结构,但也适用于ivars。
struct objc_object struct myClass_instance
{ {
Class isa; Class isa;
id my1stIVar;
id my2ndIVar;
â¦
} }
请注意,几年来,实际的内存布局是不同的。然而,这个例子足以回答你的问题。