迁移到惯用的 Swift 2 的清单(又名 Swift 2 转换指南在哪里)?

Posted

技术标签:

【中文标题】迁移到惯用的 Swift 2 的清单(又名 Swift 2 转换指南在哪里)?【英文标题】:Checklist for migrating to idiomatic Swift 2 (AKA where is the Swift 2 transition guide)? 【发布时间】:2015-09-17 08:14:36 【问题描述】:

我一直在尝试查找 Swift 2 的转换指南,特别是开发人员在将 Swift 1/1.2 代码库迁移到 Swift 2 时应注意的事项。显然,您在 Xcode 中有迁移助手,但这只是真的涵盖了驴的工作,而不是需要更聪明的思考的东西。

根据我在 Swift 2 上找到的资源,我整理了以下清单:

try/catch/throw 错误处理 - 用于可恢复的错误;相应地修改错误处理代码。尤其要检查NSError 的所有使用情况,并回调委托以报告可恢复的错误。 使用符合ErrorTypeenums 来定义您自己的有意义的错误。 使用 #available 访问较新的平台 API - 根据应用部署目标检查 API 使用情况并进行相应修改 协议扩展 - 将尽可能多的代码移入其中以帮助重用。特别是将全局函数重构为协议扩展。 可空性注释和泛型 - 删除多余的可选绑定和类型转换 使用do 控制范围并尽早释放大量资源 将旧的 do ... while 循环移动到 repeat (以消除歧义并提高可读性) 使用guard 提前返回,避免缩进过多 使用defer 清理代码,如关闭文件等。 使用选项集而不是一起使用 OR-ing 值(例如 viewAnimationOptions = [.Repeat, .CurveEaseIn, .TransitionCurlUp]) 查看public 访问器说明符,这些说明符以前只需要支持测试。请改用@testableimport MyApp。 将单例 switch 语句移动到新的 if case .MyEnumCase(let value) = bar() where value != 42 doThing(value) 使用“for ... in”过滤来清理包含if 过滤语句的for 循环,例如for value in mySequence where value != "" 对 C 函数指针的原生支持 - 提供使用闭包或全局函数(这样做时不要捕获本地上下文) 修复任何新的 let/var 警告 修复任何未使用的变量警告 可失败的初始化程序现在可以在调用 super.init 之前返回 nil - 删除之前所需的任何变通方法。然而,指定的初始化器仍然必须在返回 nil 之前初始化所有存储的属性。

来源:

https://developer.apple.com/swift/blog/?id=29

https://developer.apple.com/swift/

https://developer.apple.com/library/prerelease/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/xc7_release_notes.html#//apple_ref/doc/uid/TP40001051-CH5-SW1

https://developer.apple.com/videos/wwdc/2015/?id=106

http://www.raywenderlich.com/108522/whats-new-in-swift-2

我错过了什么?

部分问题在于 Swift 2 在 WWDC 之后继续发展。所以即使是今年的 WWDC 视频也可能已经过时了,或者至少不是全部。

【问题讨论】:

The Swift Programming Language 和 Using Swift With Cocoa and Objective-C 的修订历史记录也是查找详细更改的好地方。 还有不少变化。大多数全局函数现在变成了实例方法,字符串不再是可枚举的,一些方法和协议被重命名等。另一个很好的资源可以查看 1.2 和 2.0 之间的变化是swiftdoc.org。 【参考方案1】:

不幸的是,目前还没有来自 Apple 的官方“过渡指南”。

The Swift Programming Language (Swift 2) 在 Apple 发布新版本的 Swift 时始终由 Apple 更新,因此是获取有关 Swift 2(或更高版本)最新信息的最佳来源之一。整个语言有很多解释和示例代码,而不仅仅是更改,但这绝对是您现在正在寻找的信息的最佳来源之一。

【讨论】:

以上是关于迁移到惯用的 Swift 2 的清单(又名 Swift 2 转换指南在哪里)?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 迁移详解

Swift 惯用错误检查

JLink OB SWI 取代串口打印的方式

如何从Rancher 1.6迁移到Rancher 2.0?这份清单可以帮助你!

从 Swift 2.3 迁移到 Swift 3 错误消息

从 swift 2.3 问题迁移到 swift 3.1