objc中向一个对象发送消息[obj foo]和objc_msg
2016-05-02 本文已影响1028人
natewang
objc_msgSend()是[obj foo]的具体实现。
在runtime中,objc_msgSend()是一个c函数,[obj foo]会被翻译成这样的形式objc_msgSend(obj, foo)。
- 去obj的对应的类中找方法
- 先找缓存,找不到再去找方法列表,
- 再找父类,如此向上传递。
- 最后再找不到就要转发。
objc_msgSend()是[obj foo]的具体实现。
在runtime中,objc_msgSend()是一个c函数,[obj foo]会被翻译成这样的形式objc_msgSend(obj, foo)。