isa、superclass:

1 instance的isa指向class
2 class的isa指向meta-class
3 class的superclass指向父类的class(如果没有父类,superclass指针为nil)
4 meta-class的superclass指向父类的meta-class(基类的meta-class的superclass指向基类的class)
5 instance调用对象方法:instance的isa找class,如果没找到,就去superclass中找
6 class调用类方法:class的isa找meta-class,如果没找到,就去superclass中找
meta-class(元类对象):
获取NSObject的meta-class对象
Class objectMetaClass = object_getClass([NSObject class]); // Runtime API
以下代码获取的objectClass是class对象,并不是meta-class对象
Class objectClass = [[NSObject class] class];
查看class是否为meta-class
BOOL result = class_isMetaClass([NSObject class]); // Runtime API
网友评论