护舒宝

 

初探 objc_msgSend函数

   1.0 执行某个对象的方法    [receiver message]

  被编译为: id objc_msgSend(id self,SEL op,。。。);

objc_msgSend 发送信息的过程

1.0 首先根据receiver 对象的isa 指针获取它对应的class

2.0 优先在class 的cache 查找message 方法,如果找不到,再到methodlist查找;

3.0 如果没有在class 找到,再到super_class 查找

4.0 一旦找到message这个方法,就执行它实现的IMP

 

cache 用来缓存经常访问的方法,它指向objc_cache结构体,

methodLists 表示方法列表,它指向 objc_method_list 结构体的二级指针,可以动态修改*methodLists 的值来添加成员方法,也是Category实现原理,同样也解释Category 不能添加属性的原因

 

 

- (Class)class{

return objct_getClass(self);

}

posted on 2015-11-18 18:19  护舒宝  阅读(246)  评论(0)    收藏  举报

导航