导读:从去年年底至今,全球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的指南与技巧。