实例对象是objc_object
结构体,其实就是isa指针。
struct objc_object {
isa_t isa;
Class ISA();
Class getIsa();
}
类对象和元类对象的数据结构是一样的,都是objc_class
结构体
typedef struct objc_class *Class;
struct objc_class {
Class isa ; //每个Class都有一个isa指针
#if !__OBJC2__
Class super_class ; //父类
const char *name ; //类名
long version ; //类版本
long info ; //!*!供运行期使用的一些位标识。如:CLS_CLASS (0x1L)表示该类为普 class;CLS_META(0x2L)表示该类为metaclass等(runtime.h中有详细列出)
long instance_size ; //实例大小
struct objc_ivar_list *ivars ; //存储每个实例变量的内存地址
struct objc_method_list **methodLists ; //!*!根据info的信息确定是类还是实例,运行什么函数方法等 struct objc_cache *cache ; //缓存
struct objc_protocol_list *protocols ; //协议
#endif
} ;