老实讲,从Java转OC后头一回碰到元类的概念时有点懵,这篇博文算是往回看,看看oc的对象、类、元类间
参考资料
如果你是头一回知道这个概念,可以先看看别人的文章,和别人的文章等
别人的文章里有一副概念图!!
没有为什么(为什么有类和元类?)
看下结论,NSObject,Class,MetaClass都是objc_object结构体。
class和metaclass是objc_object很好证明,代码里写着class的isa是class(具体见class_getMetaClass实现),class是objc_class而objc_class集成objc_object,那么为什么NSObject是objc_object,目前我只能的从objc_isClass(id obj)接受参数id指针(代码里定义为objc_object指针),但可以调用objc_isClass(objcInstance)(传入对象实例)来略窥一二,NSObject也是objc_object。这里对于NSObject是objc_object有直接证明的望指教!
NSObject唯一的私有变量isa指向了Class, Class的isa指向了另一个Class也就是元类。
<