迁移到惯用的 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
的所有使用情况,并回调委托以报告可恢复的错误。
使用符合ErrorType
的enums
来定义您自己的有意义的错误。
使用 #available 访问较新的平台 API - 根据应用部署目标检查 API 使用情况并进行相应修改
协议扩展 - 将尽可能多的代码移入其中以帮助重用。特别是将全局函数重构为协议扩展。
可空性注释和泛型 - 删除多余的可选绑定和类型转换
使用do
控制范围并尽早释放大量资源
将旧的 do ... while
循环移动到 repeat
(以消除歧义并提高可读性)
使用guard
提前返回,避免缩进过多
使用defer
清理代码,如关闭文件等。
使用选项集而不是一起使用 OR-ing 值(例如 viewAnimationOptions = [.Repeat, .CurveEaseIn, .TransitionCurlUp]
)
查看public
访问器说明符,这些说明符以前只需要支持测试。请改用@testable
和import 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 转换指南在哪里)?的主要内容,如果未能解决你的问题,请参考以下文章