Swift 3.0不会兼容2.2源代码......我是否需要重建我的应用程序?

时间:2016-05-09 22:42:18

标签: ios swift swift2.2

http://thenextweb.com/apple/2016/05/09/swift-3-0-developer-previews-wwdc/#gref

这意味着什么吗?我是否必须完全重建我的应用程序或仅将2.2语法转换为3.0?

4 个答案:

答案 0 :(得分:3)

Swift 3.0与2.2无法兼容。以下是当前提案的列表,它还详细说明了已经实施的内容以及将要实施的内容:

https://github.com/apple/swift-evolution

您不必完全重建您的应用程序,但您必须调整代码。

答案 1 :(得分:2)

我说不。每个Swift应用程序都有自己的运行时和用于构建它的任何Xcode版本的标准库。我的一些Swift 1.0应用程序仍在最新版本的El Capitan上运行。

源不兼容意味着您无法获取使用Swift 2编写的有效代码,将其提供给Swift 3编译器并期望一切顺利进行。将出现错误和弃用警告,其中大部分都是您今天在Swift 2.3中看到的。

您也不能使用Swift 2编写的编译应用程序,并且无需在Swift 3运行时进行修改即可运行。 Swift目前缺乏稳定的应用程序二进制接口(ABI)。这就是每个Swift应用程序必须携带自己的运行时的原因。 OS X和iOS不提供系统级别的操作系统。因此,Swift应用程序的大小往往更大,iOS上的问题比OS X更多。

使用Swift 3,Apple正在尝试建立一个稳定的ABI,这样你编译的Swift 3就可以在Swift 4运行时运行而无需修改。

源代码兼容性怎么样?没有人知道Chris Lattner的想法或他认为过时的东西。删除Swift 3中的++--运算符对我来说似乎是多余的。为什么还要杀死C风格的for循环?

答案 2 :(得分:1)

我正在调整我的所有代码到Swift 3的当前状态。现有代码当然不兼容;大多数方法已重命名,案例名称已小写,依此类推。 Apple将在多大程度上通过提供迁移工具提供帮助,这在未来是未知的。

答案 3 :(得分:-1)

@CodeDifferent提供了一个很好的答案,但我想延伸它。

AFAIK,如果您的Swift 2应用程序编译时自己的运行时链接(即,不依赖于系统运行时),那么您的应用程序将运行良好&没有必要在Swift 3机器上重建以在Swift 3机器上运行。但如果没有运行时编译到应用程序中,那么您的应用程序将无法在具有Swift 3 ABI的计算机上运行。

当然,如果您要使用Swift 3进行编译,然后重新构建。