1

我想我了解 Objective-C++ 与 Cocoa 相关的工作原理,并且我相当精通命令行 C++ 的基础知识,但有点害怕尝试将其与 Objective-C 混合使用。我可以在 Xcode 中使用 Interface Builder 创建 GUI,甚至可以自动为接口创建类(.h 和 .m 文件)。出口,也许是动作(我仍然感到困惑)将大括号打开以放入您自己的代码。所以我可以将 C++ 代码放在这些括号中以从这些按钮中获取输入(并查看输出等) ?

我想如果是这样的话,一个人就不必学习任何 Obj-C,只要他们知道将 C++ 代码放在哪里!我错了吗?

另外,任何人都可以帮助我弄清楚这一点,或者至少指出我可以了解更多信息的地方吗?这个话题在网络上相当稀缺,我不了解 Apple 的文档。

4

3 回答 3

3

我的建议是在您的项目中包含 Objective-C 文件(.m 文件),然后将您的 Objective-C++ 保存在单独的文件中(如 diciu 所述,.mm 文件)。

一种策略是简单地将这些 Objective-C++ 类用作 C++ 类的包装器:用 C++ 编写代码,像平常一样在 .cpp 文件中编写代码。然后,当您需要从 Objective-C 文件从 C++ 访问某些功能时,编写一个包装器 Objective-C++ 类并从您的 Objective-C 调用它。

最后一点感觉对于小型项目来说需要做很多工作,而且确实如此,但是如果您需要使用大量 C++,并且要编写的 Objective-C 相对较少,那么这将非常有效。(想象一下,您正在为结构良好的 Windows 或 Linux 程序编写 Cocoa 接口:所有应用程序逻辑都以与平台无关的方式编写,而您“只需”在 Cocoa 中编写 UI 以使其运行在 Mac 上。

但是,使用这种包装器方法的另一个原因是 Objective-C++ 是一种混合语言,因此在两个方向上它的能力都有局限性。

于 2010-01-15T12:28:23.380 回答
2

The thing you need to understand about objective-c++ is that the name is a lie. or at least implies a lot more than you might think.

Objective-c++ does not mean you can write hybrid objective-c++ "objects". It means that you can use c++, and objective c, in the same file. they can reference each other directly - the cannot inherit or derive from each other.

于 2010-01-15T20:31:27.627 回答
0

将 .m 文件重命名为 .mm,您将能够在其中编写(Objective-)C++ 代码。

于 2010-01-15T11:51:26.743 回答