发送消息vs函数调用

Posted zzfx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发送消息vs函数调用相关的知识,希望对你有一定的参考价值。

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

消息发送的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函数调用的主要内容,如果未能解决你的问题,请参考以下文章

阻塞-非阻塞 VS 同步-异步

vs2003:快速片段工具

C#VS快捷键

C#VS快捷键

C#VS快捷键

C#VS快捷键