我一直在努力寻找 Swift 2 的转换指南,特别是开发人员在将 Swift 1/1.2 代码库迁移到 Swift 2 时应该注意的事项。显然你在 Xcode 中有迁移助手,但那只是真的涵盖了驴子的工作,而不是需要更聪明的思考的东西。
根据我能够在 Swift 2 上找到的资源,我整理了以下 list :
- try/catch/throw 错误处理——用于可恢复的错误;相应地修改错误处理代码。特别是,检查
NSError
的所有使用并回调委托(delegate)以报告可恢复的错误。 - 使用符合
ErrorType
的enums
来定义您自己有意义的错误。 - 使用#available 访问较新的平台 API - 根据应用部署目标检查 API 使用情况并进行相应修改
- 协议(protocol)扩展 - 将尽可能多的代码移入其中以帮助重用。特别是将全局函数重构为协议(protocol)扩展。
- 可空性注释和泛型 - 删除冗余的可选绑定(bind)和类型转换
- 使用
do { }
控制范围并尽早释放大量资源 - 将旧的
do { ... } while
循环移动到repeat { }
(以消除歧义并提高可读性) - 使用
guard
提前返回,避免过度缩进 - 使用
defer
来清理代码,例如关闭文件等。 - 使用选项集而不是将值组合在一起(例如
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/videos/wwdc/2015/?id=106
http://www.raywenderlich.com/108522/whats-new-in-swift-2
我错过了什么?
部分问题在于 Swift 2 在 WWDC 之后继续发展。因此,即使是今年的 WWDC 视频也可能已经过时,或者至少不是全部。
最佳答案
不幸的是,目前还没有来自 Apple 的官方“过渡指南”。
The Swift Programming Language (Swift 2)每当 Apple 发布新版本的 Swift 时,它总是由 Apple 更新,因此是有关 Swift 2(或更高版本)最新信息的最佳来源之一。整个语言有很多解释和示例代码,而不仅仅是更改,但这绝对至少是您目前正在寻找的信息的最佳来源之一。
关于ios - 迁移到惯用的 Swift 2 的 list (也就是 Swift 2 转换指南在哪里)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32625506/