从Objective-C移植到C ++的最佳方法是什么?

时间:2009-04-01 03:44:23

标签: c++ objective-c

我没有任何Objective-C经验,但具有强大的C ++背景。是否有自动化工具/脚本,或者最糟糕的情况是,使用一些对Objective-C到C ++编写的端口代码的优秀引用的手动方法?有什么困难?

编辑: 我被告知代码使用Objective-C相当简单。它是一个iPhone应用程序,可能不会在操作系统级别的UI中使用太多。 C ++版本适用于非Apple平台,其中GNUStep不是一个选项,因此Objective-C ++不是一个选项。

3 个答案:

答案 0 :(得分:6)

我处理同样的问题。并有一些解决方案:

  • 微软现在提供自己的Objective C“桥接器”,尽管只适用于UWP应用程序。

    https://github.com/Microsoft/WinObjC

  • 2007年,我尝试在Visual Studio中支持Objective-C并编写了自己的ObjC运行时,但我没有足够的时间为它编写解析器。如果有,你可以:)

    http://code.google.com/p/qobjc/

  • 我用C ++编写了Foundation Framework的基本功能。在这种情况下,您需要手动移植;你的代码将在C ++上,但就像在Objective-C上一样。这个库适用于iPhone。

    http://code.google.com/p/dcocoa/

答案 1 :(得分:3)

我不知道有任何自动化工具。 Objective-C的动态特性很难转换为C ++,因此除了琐碎的Objective-C代码之外,还需要相当多的大脑工作。您是否愿意继续使用OS X(或者如果您是除OS X之外的OS上使用Objective-C的少数人之一,那么保持GNUStep依赖性)?如果是这样,最简单的方法是使用Objective-C++在Objective-C和C ++代码之间构建一个桥。 Objective-C ++是Objective-C的Apple扩展和GCC编译器,允许您混合使用Objective-C和C ++代码。因此,您可以创建调用或引用(但不是从C ++对象继承)的Objective-C对象,并且可以从C ++代码中将Objective-C消息发送到Objective-C实例。

答案 2 :(得分:0)

Objective-C只是一个预处理器(和一个运行时库)。在移植所有库时,您会发现比最终用户代码更多的问题。 在翻译时,零食行为会很有趣。

在使用Objective-C框架一段时间之后,您可能会开始在所有c ++代码中看到糟糕的设计。