Swift vs Objective-C - 用于重用C ++代码

时间:2015-09-03 06:00:34

标签: c++ ios objective-c swift

我们有一个Android应用程序,其中包含在JNI库中用C ++编写的关键代码。

我们即将实施相同应用程序的iOS版本。计划是在Objective-c中实现,因为它直接将C代码与它集成。但是,随着Swift的发展,我们希望对Swift vs Objective-C提出建议,记住我们必须使用现有的C ++库和任何Swift瓶颈。

3 个答案:

答案 0 :(得分:1)

重用C ++代码的方法是编写一个Objective-C包装类,其头文件不包含任何C ++,但实现文件是用Objective-C ++(.mm后缀)编写的。

可以从Swift和Objective-C中使用Objective-C类,因此对于Swift项目,如果您有一些Objective-C类则无关紧要。

目前无法直接从Swift调用C ++,我暂时不会期待它。如果你看看你如何从Swift调用C,你可能会认为你对这种情况非常满意。

答案 1 :(得分:0)

编写Swift应用程序并在其中集成c ++源代码没有问题。

以下是步骤:

1)将c ++源文件添加到Xcode项目中。如果您使用的是第三方libreries,则需要将其作为框架添加到项目中。

2)创建一个Header桥接文件并将其添加到您的项目中。该文件将具有您希望从swift模块中使用的c ++函数签名。正如https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

中所述

3)当你在Header Bridge文件中调用c ++函数时,你需要创建一个特殊的指针对象,如下所述 - https://gist.github.com/neilpa/b430d148d1c5f4ae5ddd

希望这会有所帮助。

答案 2 :(得分:0)

感谢您的回复。仔细考虑后,我们决定使用Objective-C,甚至发布了应用程序。

其中一个关键原因是我们公司的大多数开发人员都精通C / C ++,而Objective-c比Swift更容易使用。

一旦我们定义了Makefile模板并在现有的Makefile中使用它们,就可以轻松地与现有的C / C ++代码集成而无需任何桥接代码。唯一的另一件事是为胖库创建脚本。

因此,根据我们的经验,我将推荐Objective-C over Swift。