0%

OC对象的分类

//实例对象(instance对象)
    //isa指针
    //变量
//类对象(Class对象)
    //每个类有且只有一个类对象
    //class对象在内存中存储的主要信息有:
    //isa指针
    //superclass指针
    //类属性信息(@property), 类的对象信息(instance method)
    //类的协议信息(protocol),成员变量信息(ivar)
//元类对象(meta class)
    //每个类只有一个元类对象
    //元类对象跟类对象内存结构是一样的
    //包括:
    //isa指针
    //superclass指针
    //类的类方法信息 (class method,+号开头)

#import <Foundation/Foundation.h>
#import <objc/runtime.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //实例对象(instance对象)
        NSObject *obj1 = [[NSObject alloc] init];
        NSObject *obj2 = [[NSObject alloc] init];
        
        //类对象(Class对象)
        Class objClass1 = [obj1 class]; //类对象
        Class objClass2 = [obj2 class];
        Class objClass3 = object_getClass(obj2);
        Class objClass4 = object_getClass(obj1);
        Class objClass5 = [NSObject class];
        NSLog(@"%p", objClass1);
        NSLog(@"%p", objClass2);
        NSLog(@"%p", objClass3);
        NSLog(@"%p", objClass4);
        NSLog(@"%p", objClass5);
        
        //元类对象(meta class对象)
        Class metaClass = object_getClass([NSObject class]);
    }
    return 0;
}

–EOF–