【发布时间】:2010-11-02 04:46:39
【问题描述】:
我只是在玩 Objective C(编写玩具 iPhone 应用程序),我对用于发送消息的底层机制感到好奇。我对 C++ 中的虚拟函数通常是如何实现的以及相对于静态或非虚拟方法调用的成本有很好的了解,但是我没有任何 Obj-C 的背景知识来了解消息是如何发送的。浏览了一下,我发现this 宽松基准,它提到 IMP 缓存消息比虚拟函数调用更快,而虚拟函数调用又比标准消息发送更快。
我并不想优化任何东西,只是更深入地了解消息是如何发送的。
- Obj-C 消息是如何分派的?
- 实例方法指针如何被缓存,您(通常)能否通过阅读代码来判断消息是否会被缓存?
- 类方法与 C 函数(或 C++ 中的静态类方法)本质上是否相同,还是它们有更多的东西?
我知道其中一些问题可能与“实现相关”,但只有一种实现才是真正重要的。
【问题讨论】: