Objective-C中,调用方法采用的是一种消息传递机制。
参考文章:http://blog.csdn.net/xingyevc/article/details/39397873
如果向某个对象传递一个信息,则会使用OC的动态绑定机制来决定需要调用的方法。
在底层,所有方法都是普通C语言函数。
然而对象收到消息后,究竟该掉哪个方法则完全于运行期决定,甚至可以在程序运行时改变。
这些特性使得OC称为一门真正的动态语言。
给对象发消息:
id returnValue = [someObject messageName:parameter];
转化为:
id returnValue = objc_msgSend(someObject,@selector(messageName),parameter);
objc_msgSend函数会依据接收者与选择子的类型来调用适当的方法。
为了完成此操作,该方法需要在接收者所属的类中搜索其“方法列表”(list of methods)
如果能找到与选择子名称相符的方法,就跳至其实现代码。
若找不到,那就沿着继承体系继续向上查找,等找到名称相符的方法之后再跳转。
如果最终还是找不到相符的方法,那就执行“消息转发”
时间: 2024-10-18 16:08:24