Objective-C中的对象,主要能够分3种: instance对象(实例对象)、class对象(类对象)、meta-class对象(元类对象)spa
instance对象就是经过类alloc出来的对象,每次经过alloc都会产生新的instance对象 instance对象在内存中存储的信息包括isa指针、具体成员变量的值3d
每一个类在内存中有且只有一个class对象 call对象在内存中存储的信息主要包括:isa指针、superclass指针、类的属性信息(@property)、类的对象方法信息(instance method)、类的协议信息(protocol)、类的成员变量信息(ivar)指针
objectMetaClass是NSObject的meta-class对象(元类对象),每一个类在内存中有且只有一个meta-class对象。meta-class对象和class对象的内存结构是同样,可是用途不同,在内存中存储的信息主要存储isa指针、superclass指针、类的类方法信息code
能够经过以下代码获取Class对象的元类:对象
Class objectClass = object_getClass([NSObject class]);
当调用对象方法时,经过instance的isa找到class,最后找到对象方法的实现进行调用blog
当调用类方法时,经过class的isa找到meta-class,最后找到类方法的实现进行调用内存
当Student的instance对象要调用Person的对象方法时,会先经过isa找到Student的class, 而后经过superclass找到Person的class,最后找到对象方法的实现进行调用get
当Student的class要调用Person的类方法时,会先经过isa找到Student的meta-class,而后经过superclass找到Person的meta-class,最后找到类方法的实现进行调用class