http://thenextweb.com/apple/2016/05/09/swift-3-0-developer-previews-wwdc/#gref
这意味着什么吗?我是否必须完全重建我的应用程序或仅将2.2语法转换为3.0?
答案 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进行编译,然后,将重新构建。