美文网首页
第十一条 消息传递机制 objc_msgSend

第十一条 消息传递机制 objc_msgSend

作者: 孙伟胜 | 来源:发表于2020-03-23 10:52 被阅读0次

静态绑定/动态绑定#

静态绑定,就是在编译期就能决定运行时所调用的函数。
动态绑定,就是在运行期才能确定调用函数。

消息传递机制

这样消息派发系统就在接收者所属类中查找器方法列表,如果找到和选择器名称相符的方法就跳转其实现代码,如果找不到,就再起父类找,等找到合适的方法在跳转到实现代码。这里跳转到实现代码这一操作利用了尾递归优化。

如果该消息无法被该类或者其父类解读,就会开始进行消息转发。

每次都查询会不会很慢?

每个类都有一个消息缓存列表,objc_msgSend会将匹配的结果放在这个“快速映射表里”,若稍后还查询这个类,那么查询起来就会快很多。

相关文章

网友评论

      本文标题:第十一条 消息传递机制 objc_msgSend

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