导读:从去年年底至今,全球iOS开发者一直在期待以及展望Swift 3,在凌晨“开放”成重点的WWDC上,苹果实现了Siri、iMessage等软件在多平台的打通及开放,而对于开发者而言,最为关注的莫过于Xcode和Swift的更新。

北京时间6月14日,苹果开源语言的高级经理Ted Kremenek在Swift官方博客上发布了一篇题为“Swift 3.0 Preview 1 Released!”的文章,介绍了Swift 3.0的第一个开发者预览版:

正如Swift 3.0发布流程中提到的那样,新的3.0开发者预览版(包括seed或beta版)提供了合格的Swift 3 build包,而不仅是抓取master分支(即tip-of-trunk开发)上的最新快照,这种方式所提供的Swift库更为稳定。

目前Swift 3的所有开发者预览版都还处于开发阶段,若非特别注明,都不是Swift 3的最终版。

下面列出了本次在Swift 3.0开发者预览版第一版中所实现的Swift改进提案,此前为大家关注的几项变动也在其中:

SE-0002: 删除currying func声明语法 SE-0003: 函数参数中不再使用var关键字 SE-0004: 删除++与–操作符 SE-0005: 将Objective-C的API更好地接入Swift中 SE-0006: 将API指南应用于标准库中 SE-0007: 移除了C语言风格的for循环(条件与增量下) SE-0008: 为可选序列增加一个Lazy flatMap SE-0019: Swift测试 SE-0023: API设计指南 SE-0028: 更新Swift的debug标识符(如__FILE__等) SE-0048: 泛型类型别名 SE-0049: 将声明式@noescape与@autoclosure改为类型属性

其他变更还有:

SE-0016: Adding initializers to Int and UInt to convert from UnsafePointer and UnsafeMutablePointer  SE-0017: Change Unmanaged to use UnsafePointer  SE-0029: Remove implicit tuple splat behavior from function applications  SE-0031: Adjusting inout Declarations for Type Decoration  SE-0032: Add first(where:) method to SequenceType  SE-0033: Import Objective-C Constants as Swift Types  SE-0034: Disambiguating Line Control Statements from Debugging Identifiers  SE-0037: Clarify interaction between comments & operators  SE-0039: Modernizing Playground Literals  SE-0040: Replacing Equal Signs with Colons For Attribute Arguments  SE-0043: Declare variables in ‘case’ labels with multiple patterns  SE-0044: Import as Member  SE-0046: Establish consistent label behavior across all parameters including first labels  SE-0047: Defaulting non-Void functions so they warn on unused results  SE-0053: Remove explicit use of let from Function Parameters  SE-0054: Abolish ImplicitlyUnwrappedOptional type  SE-0055: Make unsafe pointer nullability explicit using Optional  SE-0057: Importing Objective-C Lightweight Generics  SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly  SE-0061: Add Generic Result and Error Handling to autoreleasepool()  SE-0062: Referencing Objective-C key-paths  SE-0064: Referencing the Objective-C selector of property getters and setters  SE-0065: A New Model For Collections and Indices  SE-0066: Standardize function type argument syntax to require parentheses  SE-0069: Mutability and Foundation Value Types  SE-0070: Make Optional Requirements Objective-C-only  SE-0071: Allow (most) keywords in member references  SE-0085: Package Manager Command Names  SE-0094: Add sequence(first:next:) and sequence(state:next:) to the stdlib

下载:

苹果(Xcode)

Swift 3.0预览版第一版目前可作为Xcode 8 beta 1的一部分免费下载。

Linux (Ubuntu 14.04 and Ubuntu 15.10)

可用于Ubuntu 14.04和Ubuntu 15.10的官方版目前可在Swift.org下载。

文档:

适用于Swift 3.0的《Swift编程语言》文档目前可以在Swift.org下载,在苹果的iBooks商店也可以免费下载。

迁移到Swift 3

Swift 3与Swift 2.2.1在代码上变化极大,包含了许多语法优化与更新,但在Objective-C API接入Swift的方式上也有巨大的变化(SE-0005),请参见迁移指南来查看迁移到Swift 3的指南与技巧。