5

我正在考虑学习 Objective-C 和 Cocoa,主要是为了使用 Apple 的工具和 GUI。

不过,我也想做一些图形编程;OpenFrameworks 和 Cinder 是两个引起我注意的库,但是我们在 C++ 领域。

我来自 Java/Swing/Processing 背景……对 C 家族了解不多。从原生 Cocoa 调用 C 和 C++ 库(如 Cinder 和 OF)的效率如何?

而且,加分项:这样的解决方案可以在 iPhone 或 iPad 上运行吗?

4

3 回答 3

12

简而言之,C++ 非常适合 OS X 和 iOS 程序,并且可以很好地与 Objective-C 配合使用。

更详细地说:

不过,我也想做一些图形编程;OpenFrameworks 和 Cinder 是两个引起我注意的库,但是我们在 C++ 领域。

我不会直接代表那些图书馆。

更笼统地回答您的问题:C++ 在您的应用程序中很好用,因为 C、C++、ObjC 和 ObjC++ 是 iOS 应用程序的一流开发语言。

我来自 Java/Swing/Processing 背景……对 C 家族了解不多。从原生 Cocoa 调用 C 和 C++ 库(如 Cinder 和 OF)的效率如何?

Objective-C++ 允许您在同一个翻译中使用 C、C++ 和 Objective-C。在需要的地方随意使用/组合 C++、C 或 ObjC。编译时间会增加,如果你走这条路,会有一些限制*。否则,支持非常好。甚至 Apple 在他们的应用程序/库中也使用了大量的 C++。

而且,加分项:这样的解决方案可以在 iPhone 或 iPad 上运行吗?

确实。c++11 对 iOS 和 OS X 的支持目前有点落后。然而,clang 团队很快就增加了对它的支持。如果您想要最新的功能,可能会有一些障碍,所以如果您的项目依赖于它,我会说保留最前沿的 C++ 和编译器功能。当然,在每个版本中使用最新的 clang 特性对程序进行采样以确定它与您的程序的工作情况并没有什么坏处。

更新:此时(2011 年 11 月 8 日)clang 可以处理我扔给它的几乎所有 C++ 2003 代码。与 GCC+LLVM 相比,代码速度和大小确实有所不同。在这一点上我不想放弃,但是两个编译器都适用于 C++ 2003,而且 Apple 的 GCC 不支持 c++11,所以如果你想要 c++11 功能,现在是开始测试 clang 的好时机在不远的将来。

  • 只要您的团队知道如何使用它,C++ 是 iOS 上一般性能关键型开发的理想 (IMO)。
  • 如果您出于正确的原因使用每种语言的正确特性,那么混合 C、ObjC 和 C++ 是非常强大的,并且存在良好的兼容性。这可以追溯到 OS X 几年前(尽管当时的编译器是 GCC)。

*限制:这些是合理的限制 - 您需要的所有功能都存在,但有些事情人们可能期望这是不可能的。最常见的可能是无法派生不同对象模型的类型。也就是说,您不能合理地不从 objc 类型创建 c++ 类型,但您可以在任一对象类型中自由声明多种类型的 ivars。

于 2011-07-01T06:48:02.690 回答
6

可以在 iOS 应用程序中同时使用 OpenFrameworks 和 Cinder(请参阅这个相关的 SO 问题:OpenGL ES、OpenFrameworks、Cinder 和 IOS 创意开发),尽管 Apple “更喜欢”开发人员使用 OpenGL。

于 2011-07-01T05:14:50.350 回答
3

到目前为止,您可以通过新的CocoaCinderGL 包装器在典型的 Cocoa 项目中使用 Cinder 。它允许您向应用程序添加多个 NSCustomView,每个都运行 Cinder 的独立“实例”。显然,您可以将任意数量的 NSButton、NSSlider 连接到这些实例。希望有帮助!

于 2011-09-01T21:27:31.337 回答