读effective objective-c 2.0 整理文章 - 11条 理解objc_msgSend的作用

id returnValue = [someObject messageName:para]

编译器会把以上消息转发函数转化为

id returnValue = objc_msgSend(someObject, @selector(messageName:),para);


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


发布了17 篇原创文章 · 获赞 6 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/jacky_jin/article/details/49329159