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

Swift vs Objective-C - for reusing C++ code

本文关键字:c++ 代码 -重用 Objective-C vs Swift      更新时间:2023-10-16

我们有一个android应用程序,它的关键代码是在JNI库中用c++编写的。

我们即将实现同一应用程序的iOS版本。该计划将在Objective-c中实现,因为它可以直接集成C代码。然而,随着Swift的发展,我们希望对Swift和Objective-C有一些建议,记住我们必须使用现有的c++库和任何Swift瓶颈。

重用c++代码的方法是编写一个Objective-C包装器类,头文件中不包含任何c++内容,而是用objective - c++()编写的实现文件。mm后缀)。

一个Objective-C类可以在Swift和Objective-C中使用,所以对于一个Swift项目,如果你有几个Objective-C类并不重要。

目前还没有办法直接从Swift调用c++,我暂时也不会期待它。如果你看一下如何从Swift调用C,你可能会觉得你对这种情况很满意。

感谢您的回复。经过慎重考虑,我们决定使用Objective-C,甚至发布了应用程序。

其中一个关键原因是我们公司的大多数开发人员都精通C/c++,而Objective-c比Swift更容易上手。一旦我们定义了Makefile模板并在现有的Makefile文件中使用它们,与现有的C/c++代码的集成就很容易了,不需要任何桥接代码。唯一额外的事情是为胖库编写脚本。

因此根据我们的经验,我会推荐Objective-C而不是Swift。

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

步骤如下:

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

2)创建一个Header桥文件并将其添加到项目中。这个文件将包含你想在swift模块中使用的c++函数签名。如https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

所述

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