为什么Swift版本与XCode版本紧密结合?

为什么Swift版本与XCode版本紧密结合?,swift,xcode,Swift,Xcode,抱歉,如果已经有人问过这个问题,但我想详细了解一下,因为它对我所有的Swift应用程序都产生了巨大的依赖性 在大多数Swift版本更新中,有一个与之紧密耦合的Xcode版本 例如,如果我使用Xcode 9.2使用Swift 4.0.3创建一个框架,它不会使用Xcode 9.3/9.4或即将推出的Xcode 10进行编译,我理解为Swift本身正在发展,没有编译器可以提供前向兼容性 但我想知道,你们中的任何一个人以不同的方式处理这个问题,我是否完全没有找到一些捷径。这不一定是某种答案,但你们确实有

抱歉,如果已经有人问过这个问题,但我想详细了解一下,因为它对我所有的Swift应用程序都产生了巨大的依赖性

在大多数Swift版本更新中,有一个与之紧密耦合的Xcode版本

例如,如果我使用Xcode 9.2使用Swift 4.0.3创建一个框架,它不会使用Xcode 9.3/9.4或即将推出的Xcode 10进行编译,我理解为Swift本身正在发展,没有编译器可以提供前向兼容性


但我想知道,你们中的任何一个人以不同的方式处理这个问题,我是否完全没有找到一些捷径。

这不一定是某种答案,但你们确实有能力在较新版本中使用不同的Swift版本(更多详细信息,请参阅答案)。我的方法一直是跟上最新的Xcode版本,无论是通过Mac App Store还是开发者下载,并运行我的项目副本以确定即将发生的更改

Swift早期版本(1.0->2.0)之间的变化令人难以置信地不和谐。Swift 4.0.3->4.1(甚至4.2)的变化并没有那么剧烈,虽然对语言的开发仍然至关重要,但Xcode现在在建议如何更新代码方面做得更好


简言之,不一定有一条捷径(我知道),但您可能会发现自己处于一个更好的位置,不断评估更新的Xcode版本中的当前代码,并决定如何以及何时迁移到更新的语言。

这不一定是某种答案,但您确实能够在较新版本中使用不同的Swift版本(有关更多详细信息,请参阅答案)。我的方法一直是跟上最新的Xcode版本,无论是通过Mac App Store还是开发者下载,并运行我的项目副本以确定即将发生的更改

Swift早期版本(1.0->2.0)之间的变化令人难以置信地不和谐。Swift 4.0.3->4.1(甚至4.2)的变化并没有那么剧烈,虽然对语言的开发仍然至关重要,但Xcode现在在建议如何更新代码方面做得更好


简言之,不一定有一条捷径(我知道),但您可能会发现自己处于一个更好的位置,不断评估新Xcode版本中的当前代码,并决定如何以及何时迁移到新语言。

在我们达到Swift 5后,这种情况会变得更好。在那之前,你所能做的就是接受它,每次更新到新版本的Swift时都会进行更新。两项建议:

  • 在最新的Swift版本中,您的生活变得简单了一些,因为您可以将条件编译与
    #if
    以及类似
    Swift(>=4.2)
    或(从Swift 4.2开始)
    编译器(>=4.2)
    的条件一起使用,这样您就可以根据我们编译的Swift版本来谈论不同的方式

  • 语言版本是每个目标的生成设置。因此,联轴器没有完全紧固;如果您使用的是较旧的代码,则可以继续(在某种程度上)使用较旧版本的语言。此屏幕截图来自Xcode 10,显示您可以编译Swift 4.0代码:


在我们到达Swift 5后,这种情况会好得多。在那之前,你所能做的就是接受它,每次更新到新版本的Swift时都会进行更新。两项建议:

  • 在最新的Swift版本中,您的生活变得简单了一些,因为您可以将条件编译与
    #if
    以及类似
    Swift(>=4.2)
    或(从Swift 4.2开始)
    编译器(>=4.2)
    的条件一起使用,这样您就可以根据我们编译的Swift版本来谈论不同的方式

  • 语言版本是每个目标的生成设置。因此,联轴器没有完全紧固;如果您使用的是较旧的代码,则可以继续(在某种程度上)使用较旧版本的语言。此屏幕截图来自Xcode 10,显示您可以编译Swift 4.0代码: