首页 > 其他 > 详细

发送消息vs函数调用

时间:2018-02-02 12:45:21      阅读:196      评论:0      收藏:0      [点我收藏+]

消息发送:对象处理消息;

消息发送的selector作为消息的一部分,在对象的运行时底层参与了消息分发,最终完成动态函数调用。

 

objc_msgSend(void /* id self, SEL op, ... */ )

id objc_msgSend ( id self, SEL op, ... );

 

函数调用:符号与函数地址绑定并执行。

 

在苹果官方文档《Objective-C Runtime Programming Guide》中提出和Objective-C运行时交互有三种方式,其中最底层的一种方式就是直接使用runtime的函数。我们下面就来看下和发送消息直接相关的几个函数:

1
2
3
4
5
objc_msgSend
objc_msgSend_fpret
objc_msgSend_stret
objc_msgSendSuper
objc_msgSendSuper_stret

我们看到他们都是以objc_msgSend开头的,也就是Objective-C“消息发送”的意思,我们就来看最基础的,也就是第一个。

1
id objc_msgSend ( id self, SEL op, ... );

发送消息vs函数调用

原文:https://www.cnblogs.com/feng9exe/p/8404487.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!