object Class meta-Class(一般也只有在objective c runtime中用到)
对象 类 元类?
1. 在obj c中,方法调用以发消息的形式进行,如[aObject startWork];
此时runtime 会通过obj_class数据结构的isa从Class的方法列表和super_class从super Class(父类)的方法列表里面去找相应的函数。所以,其实在objc中,Class是以一个对象的形式维护着的。所以为什么我们在定义一个类方法的时候,里面可以使用self, 比如[self performSelector.....]。
2. 那么如果对类进行方法调用的时候,如[NSSring stringWithString:@"],(此时runtime发送消息给一个对象,该对象是Class替身,专门处理类的事物)
此时,runtime就会从metaClass的方法列表里面找Class 的方法。Class的isa指向MetaClass,所以metaClass很重要,它维护了一个类的方法列表。
据此,Class 是对象的综合抽象,那么metaClass就是Class的综合抽象
3.貌似差不多结束了,但是在runtime里面,会对MetaClass进行操作,所以当对MetaClass进行方法调用的时候,他去哪里找方法列表呢?就是说,metaClass的Class是什么呢?
是, 基类的MetaClass,一般情况下所有的类继承自NSObject 就是NSObject的MetaClass,既MetaClass的isa指向NSObject的metaCLass
http://zhiwei.li/text/2010/11/objective-c中的meta-class/ (中文翻译)
http://www.cocoawithlove.com/2010/01/what-is-meta-class-in-objective-c.html