美文网首页
objc_msgSend(id theReceiver,SEL

objc_msgSend(id theReceiver,SEL

作者: FRAJ | 来源:发表于2019-05-13 09:53 被阅读0次
  1. 判断receiver是否为nil,如果是nil则不往下执行,返回nil,这也是为什么在OC中向一个nil发送消息不会引起崩溃;
  2. 从方法的缓存中查找,被调用过的方法会存在缓存里面,每个类都会有一个表来存储被调用过的方法,以便下次更快的调用;
  3. 从本类的方法表(dispatch table)中查找方法寻找selector,找到则写入缓存,返回方法。否则再从父类中查找方法,如此往复,直到达到基类。

如果找不到方法,则进入方法的动态解析,消息转发。

相关文章

网友评论

      本文标题:objc_msgSend(id theReceiver,SEL

      本文链接:https://www.haomeiwen.com/subject/qtgkaqtx.html