ios - 迁移到惯用的 Swift 2 的 list (也就是 Swift 2 转换指南在哪里)?

标签 ios xcode swift swift2

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

根据我能够在 Swift 2 上找到的资源,我整理了以下 list :

  • try/catch/throw 错误处理——用于可恢复的错误;相应地修改错误处理代码。特别是,检查 NSError 的所有使用并回调委托(delegate)以报告可恢复的错误。
  • 使用符合ErrorTypeenums 来定义您自己有意义的错误。
  • 使用#available 访问较新的平台 API - 根据应用部署目标检查 API 使用情况并进行相应修改
  • 协议(protocol)扩展 - 将尽可能多的代码移入其中以帮助重用。特别是将全局函数重构为协议(protocol)扩展。
  • 可空性注释和泛型 - 删除冗余的可选绑定(bind)和类型转换
  • 使用 do { } 控制范围并尽早释放大量资源
  • 将旧的 do { ... } while 循环移动到 repeat { } (以消除歧义并提高可读性)
  • 使用guard提前返回,避免过度缩进
  • 使用defer 来清理代码,例如关闭文件等。
  • 使用选项集而不是将值组合在一起(例如 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 视频也可能已经过时,或者至少不是全部。

最佳答案

不幸的是,目前还没有来自 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/

相关文章:

ios - 使用 AFNetworking 解析 JSON 文件

android - Jenkins:致命:无法初始化类 hudson.util.ProcessTree$UnixReflection

ios - UITextfield 的位置未正确设置

iphone - 无法使用 shouldChangeCharactersInRange 隐藏键盘

ios - 如何将数组的数组放入 Swift 1.2 中的另一个数组

swift - 子类的闭包/回调中的 instancetype 参数类型

ios - 在设备上运行但不在 Swift 模拟器中运行时的断点

iphone - 使用 Couchbase Mobile 是否为时过早?

ios - Xcode 5 将 xib 升级到 iOS 7

ios - 在 childViewController 之间切换时无法删除 searchController