objc中向一个对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?

objc_msgSend()是[obj foo]的具体实现。
在runtime中,objc_msgSend()是一个c函数,[obj foo]会被翻译成这样的形式objc_msgSend(obj, foo)。

  • 去obj的对应的类中找方法
  • 先找缓存,找不到再去找方法列表,
  • 再找父类,如此向上传递。
  • 最后再找不到就要转发。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,838评论 0 9
  • 摘自: http://www.cocoachina.com/ios/20150803/12872.html 说明...
    program袁阅读 890评论 1 3
  • 你是否在努力奋斗?奋斗路上的美景与收获丰盛吗?你,还在努力吗? 大学时跟同学在电影院看《少年π的奇幻漂流》,震惊于...
    喵脚迷阅读 541评论 0 0
  • 在知乎上看到没有安全感是什么体验 一个回答“想要被看见害怕被了解” 确
    闫丽彬阅读 193评论 0 0