Swift动态库是否与旧的swift版本项目向后兼容

时间:2017-04-06 08:21:08

标签: ios objective-c swift

我开始从头开始使用SDK。我不确定我是否应该在Swift或Objective-C中编写它。我觉得Swift在很多方面都比Objective-C好,但我的主要问题是 - swift动态库是否支持旧版Swift。假设我在Swift 3.0中编写动态库,是否可以在使用Swift 2.2的项目中使用该动态库?我在一篇正在阅读的文章中找到了这个

  

动态库是可以链接到的可执行代码块   一个应用程序。此功能允许当前的Swift应用程序链接   随着时间的推移,随着Swift语言的发展,它将迎来更新版本。

这是否意味着我将能够在使用Swift 2.2的项目中运行Swift 3.0中构建的动态库?我也在Apple documentation

中找到了这个
  

首先,Swift 2.3和Swift 3不是二进制兼容的,所以你的应用程序   整个代码库需要选择一个版本的Swift。

我发现这与第一个陈述相当矛盾。我知道使用桥接头在Swift中导入Objective-C库是非常简单的,对于相反的情况是否同样如此?在尝试使Swift库与Objective-C项目一起工作时,我是否会遇到任何问题或障碍。我无法找到解决向后兼容性的任何答案或文章。任何帮助深表感谢。谢谢!

TLDR:使用Swift 3(或更高版本)构建的动态库是否与使用旧版Swift或Objective-C项目的项目兼容

1 个答案:

答案 0 :(得分:2)

简单地说,第一个引用的陈述是假的(目前)。

Swift ABI(应用程序二进制接口)尚未最终确定。 ABI是关于函数调用的外观,变量和引用如何存储在真实机器中的约定的集合等。在完成之前,应用程序中的所有Swift模块都必须使用相同版本的Swift进行编译。

有关Swift ABI的更多信息,请参阅Swift ABI Manifesto.