过去几天我一直在修改C ++,只是阅读了箭头成员选择操作符。
在C ++中:
MyClass classObject;
MyClass *classPointer = &classObject;
classPointer->someFunction();
这是箭头成员选择运算符用于访问函数的方式。
但是在Objective-C中:
MyViewController *vc = [[MyViewController alloc] init];
[vc someFunction];
我习惯写这样的代码。为什么这段代码合适?现在修改C ++之后,这对我来说没有意义。
对不起,如果这是一个愚蠢的问题。
想更好地理解这个概念。
答案 0 :(得分:1)
你提到的第二段代码确实是Objective-C。
这里实际发生的是您向vc
发送消息以调用someFunction
方法。
Objective-C运行时处理这些消息。
如果您感兴趣,请参阅Apple关于Objective-C运行时的文档中的详细信息:Objective-C Runtime Programming Guide: Messaging
答案 1 :(得分:1)
您的第一个代码片段位于C ++上下文中,第二个代码片段位于Objective-C上下文中。
两者都是不同的编程语言,它们可能共享更多共同点而不是差异。至少两者都基于标准C. 一些差异非常重要,例如绑定过程。
你的问题是什么?
如果它真的是关于箭头操作符。在Obj-C中仍然存在它从C语言“继承”的扩展。在Obj-C中的每个对象下面都由C结构(类似于C ++对象)在内存中表示,因此您可以访问reglular iVars箭头操作符,但没有常规方法。
(你当然可以通过滥用常规C指针算法来调整它,并使用指针作为函数调用,并且如果你做得正确,它甚至应该工作正常。但是为什么?)