0

过去几天我一直在修改 C++,只是在阅读箭头成员选择运算符。

在 C++ 中:

MyClass classObject;
MyClass *classPointer = &classObject;

classPointer->someFunction();

这就是箭头成员选择运算符用于访问该函数的方式。

但在 Objective-C 中:

MyViewController *vc = [[MyViewController alloc] init];
[vc someFunction];

我习惯写这样的代码。为什么这段代码是正确的?现在在修改 C++ 之后,这对我来说没有意义。

对不起,如果这是一个愚蠢的问题。

想更好地理解这个概念。

4

2 回答 2

1

你提到的第二段代码确实是Objective-C。

这里实际发生的是您正在发送消息vc以调用该someFunction方法。

Objective-C 运行时处理这些消息。

如果您有兴趣,Apple 的 Objective-C 运行时文档中概述了详细信息:Objective-C 运行时编程指南:消息传递

于 2013-07-14T14:25:05.397 回答
1

您的第一个代码片段正好在 C++ 上下文中,而第二个片段正好在 Objective-C 上下文中。

两者都是不同的编程语言,它们的共同点可能多于差异。至少两者都基于标准 C。其中一些差异非常重要,例如绑定过程。

你的问题是什么?

如果它真的是关于箭头运算符。这仍然存在于 Obj-C 中,以至于它是从 C 中“继承”的。在 Obj-C 中的每个对象下面都由 C 结构(类似于 C++ 对象)在内存中表示,因此您可以使用箭头运算符,但没有常规方法。

(你当然可以通过滥用常规的 C 指针算法来调整它,并使用指针作为函数调用,如果你做对了,它甚至应该可以正常工作。但是有什么用呢?)

于 2013-07-14T14:55:37.667 回答