id returnValue = [someObject messageName:para]
编译器会把以上消息转发函数转化为
id returnValue = objc_msgSend(someObject, @selector(messageName:),para);
objc_msgSend函数会依据接收者与选择子的类型来调用适当的方法。为了完成此操作,该方法需要在接收者所属的类中搜寻其方法列表,如果能找到与选择子名称相符的方法就跳至其实现代码。若是找不到,就沿着集成体系继续向上查找,等找到合适方法之后再跳转。如果最终还是找不到相符的方法,那就执行“消息转发”操作。