Objective C meta-class

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值