c++ - 混合 Objective-C 和 boost/C++

标签 c++ objective-c optimization boost objective-c++

我终于有了一个非常基本版本的图形搜索器,可以通过 CLI 运行,但我发现自己处于需要重构所有代码的位置。由于我是在 Mac 上进行此编程,因此我考虑将 Cocoa 用于 GUI,然后将我的 C++ 函数作为主力。这只是一个临时修复,因为最终我希望能够在 linux box/cluster 上运行我的所有代码。 Here是我关于实现的最后一个问题,我确实在 boost 中实现了它,滚动了我自己的图形函数(目前)。

所以我的想法是:为图形本身构建 C++ 类,并为我想要计算的数量构建单独的函数或方法。 This是我能找到的关于混合使用 Objective-C 和 C++ 的最新描述。但我想知道:

在 Xcode 中编译我的 C++ 代码会得到优化吗?重点是我希望 C++ 代码针对快速内存访问、多线程和访问 boost 库进行全面优化。然后,我可以将 C++ 类封装在一个包装 ObjectiveC 类中。为此,我基本上有 2 个类(class),对吗?带有 .h 和 .cpp 文件并包含 boost 库的 C++ 类,然后是带有 .h 和 .mm 文件的 ObjC 类包装器,其中 .h 不包含对 C++ 类的任何引用,我使用包含在.mm 文件。然后我可以为 Objective C 使用我的正常 MVC 设计和 GUI 实现。只要我给 dealloc 命令 nuke C++ 类的能力,我就不必担心内存管理? ARC 是否也适用于 C++,它是否赋予 OSX 内存管理和清理我的 C++ 代码的能力?

我怀疑如果我想要线程,我会选择 boost 线程,因为 GCD 的编码会使它特定于平台(尽管现在,这就是它运行的全部)。我认为目前我将远离 Core Data,因为我通过简单地解析文本文件来创建图表。

最佳答案

Will compiling my C++ code in Xcode be optimized?

编译代码的不是 Xcode,而是编译器(GCC 或 clang),如果您使用适当的编译器标志请求它优化代码,它将优化您的代码。我不明白混合使用 C++ 和 Objective-C 会使编译器无法优化...

As long as I give the dealloc command the ability to nuke the C++ class, I don't have to worry about memory management?

具体是什么?您仍然必须照常管理 C++ 和 Objective-C 对象的内存。

Does ARC work well with C++ as well?

不,它不是,它是一个 Objective-C 特性。 C++ 甚至没有引用计数(我希望它有……)。

关于c++ - 混合 Objective-C 和 boost/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15129063/

相关文章:

c++ - CGI 呈现屏幕 shell 脚本输出

ios - 不建议使用GCD的方法

IOS:如何从方法声明中识别方法名称

mysql - 测量实际的 MySQL 查询时间

c++ - 转换大约 150mb 字符串的快速方法

C++ 编程 try catch

oracle - 对 View 使用提示?

optimization - 置换 SSE __m128i 寄存器内的字节

c++ - 在 Visual Studio 2019 C++ 中使用 CPPUnitTest 编写 "DivideByZero"单元测试用例时出现问题

objective-c - __NSCFBoolean isEqualToString :]: unrecognized selector sent to instance