一个NSObject对象占用多少内存?
一个指针变量所占用的大小(64bit,8个字节。32bit,4个字节)
对象的isa指针指向哪里?
instance对象的isa指向class对象
class对象的isa指向meta-class对象
meta-class对象的isa指向基类的meta-class对象
OC的类信息存放在哪里?
成员变量的具体值存放在instance对象
对象方法、协议、属性、成员变量信息存放在class对象
类方法信息存放在meta-class对象
元类对象的判别
NSObject *object = [[NSObject alloc] init];
Class objectClass = [NSObject class];
struct mj_objc_class *objectClass2 = (__bridge struct mj_objc_class *)objectClass;
Class objectMetaClass = object_getClass(objectClass);
NSLog(@"%d %d", class_isMetaClass(objectClass), class_isMetaClass(objectMetaClass));
NSLog(@"%p %p %p", object, objectClass, objectMetaClass);
// NSObject的class对象:0x00007fffa7a32140
// NSObject的instance对象的isa:0x001dffffa7a32141