“Yeah It’s on. ”
前言
学无止境
NSObject 本质
1
2
3
struct NSObject_IMPL {
Class isa; // isa地址,就是这个结构体的地址,就是NSObject的地址
}
- 成员变量的值,放在instance对象里面
{ _age, // 如:age = 10,具体某个对象的值是多少,存放在对象里 } NSObject *obj1 = [[NSObject alloc] init];
- 成员变量的属性,协议,对象方法,放在class对象里
1 2 3
Class cls1 = [obj1 class]; Class cls2 = [NSObject class]; Class cls3 = object_getClass(obj1);
- 类方法,放在meta-class对象里,每个类在内存中有且只有一个meta-class对象
1 2 3 4 5 6 7
{ isa指针 superclass指针 类的类方法信息(class method) ... } Class metaClass = object_getClass(cls123);