2011-07-01 80 views
5

我正在考虑学习Objective-C和Cocoa,主要是为了使用Apple的工具和GUI。你可以在Cocoa(Obj-C)项目中使用C++库吗?

但是,我也想做一些图形编程; OpenFrameworks和Cinder是两个吸引我眼球的库,但是我们在C++领域。

我来自Java/Swing/Processing背景......对C族不太了解。您可以如何有效地从本地Cocoa调用C和C++库,如Cinder和OF?

而且,奖励点数:这样的解决方案可以在iPhone或iPad上工作吗?

回答

12

简而言之,C++对于OS X和iOS程序来说很好,并且可以很好地与Objective-C一起玩。

的详细信息:

不过,我也希望做一些图形编程; OpenFrameworks和Cinder是两个吸引我眼球的库,但是我们在C++领域。

我不会直接为这些图书馆说话。

要更为一般地回答您的问题:因为C,C++,ObjC和ObjC++是iOS应用程序的头等开发语言,所以C++在您的应用程序中表现得很好。

我来自Java/Swing/Processing背景......对C族不太了解。您可以如何有效地从本地Cocoa调用C和C++库,如Cinder和OF?

Objective-C++允许您在同一翻译中使用C,C++和Objective-C。在需要的地方随意使用/组合C++,C或ObjC。编译时间会增加,并且如果您采用此路线,则存在一些限制*。否则,支持是非常好的。即使苹果在他们的apps/libs中使用了大量的C++。

而且,奖励点数:这样的解决方案可以在iPhone或iPad上工作吗?

当然。 iOS和OS X的C++ 11支持目前有点落后。然而,叮当队已经非常迅速地为它增加了支持。如果你需要最新的功能,可能会有一些颠簸,所以如果你的项目依赖于它,我会说阻止了C++和编译器的功能。当然,在每个发行版中使用最新的铿锵声功能对您的程序进行采样以确定它与您的程序的协作程度并不会有什么影响。

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

  • 只要您的团队知道如何使用它,C++对于iOS上的一般性能关键开发是理想的(IMO)。
  • 如果您出于正确的理由使用每种语言的正确功能,并且存在良好的兼容性,混合C,ObjC和C++功能非常强大。这从OS X回来(尽管编译器当时是GCC)。

*限制:这些都是合理的限制 - 您需要的所有功能都存在,但有些东西人们可能会认为这是不可能的。最常见的可能是无法推导出不同类型的对象模型。也就是说,你不能合理地从objc类型创建一个C++类型,但是你可以在任何对象类型中自由地声明多个类型的ivars。

3

截至目前,您可以通过新的CocoaCinderGL wrapper在典型的Cocoa项目中使用Cinder。它可以让你添加几个NSCustomView到你的应用程序中,每一个都运行一个独立的Cinder实例。显然,你可以将任意数量的NSButtons,NSSliders连接到这些实例。希望有所帮助!

相关问题