swift 3迁移到swift5 swift版本迁移指南

Swift 5已经发布下面是官方swift5的介绍。

Introducing Swift 5.1

Swift 5.1 now makes it easier to create and share binary frameworks with others. It also includes features that make it easier to design better APIs and reduce the amount of common boilerplate code.

Key Features

  • Module stability defines a new text-based module interface file that describes the API of a binary framework.
  • Property wrappers introduce a general purpose syntax for defining custom access patterns for property values.
  • Opaque result types help hide implementation details in APIs.
  • 'Self' can now be used for classes and value types.
  • Support for handling and updating diffs on collections of appropriate types.
  • Improvements to SIMD and String types.

此版本终于迎来了 ABI 稳定,因此 Swift 运行时现在可以引入到 Apple 平台各类操作系统的不同版本中,包括 macOS、iOS、tvOS 与 watchOS。Swift 5 还引入了构建块的新功能,包括重新实现 String、在运行时对执行内存的独占访问与新数据类型,以及对动态可调用类型的支持。

Swift 5 兼容 Swift 4、Swift 4.1 和 Swift 4.2,Xcode 10.2 中包含了一个代码迁移器,可以自动处理许多迁移需要用到的源码更改。

语言更新

稳定的 ABI 与二进制兼容性

ABI 已经稳定,因此 Swift 库现在可以整合到每个 macOS、iOS、tvOS 和 watchOS 版本中,应用将更容易构建,并且体积更小,因为它们不必包含这些库。

标准库更新

Swift 5 中的标准库包括以下新特性:

  • 使用 UTF-8 编码重新实现的 String 可以产生更快的代码,之前我们已经报导过:Swift 5 将使用 UTF-8 作为首选字符串编码
  • 改进了对字符串中原生文本的支持
  • 标准库添加 Result 和 SIMD 矢量类型
  • 增强了字符串插值功能,为从数据构造文本提供了更多灵活性
  • 改进了 Dictionary 和 Set 的性能

 

目前应该有不少的项目还是处于OC Swift混编的状态, 那么如何将这部分老的OC代码迁移至Swift版本?

1:重写(量大的话不太现实), 比较耗费精力和时间
2:使用工具(本片文章主要推荐的)   

备份好代码,对于 Xcode 我有一个经验再次和大家分享一下:Xcode 有两个版本,一个不稳定的版本和一个更不稳定的版本。

Swiftify

xcode可直接下载安装, 下载安装后需要简单的配置方可使用:

  1. -系统偏好设置>"扩展"中为Xcode Source Editor(Xcode源码编辑器)选择"Swiftyfy for Xcode"
  2. 打开Xcode > Editor > 菜单下看到新的"Swiftify"子菜单

这里有三个选项:

  • 1: Convert Selection to Swift(将选中的代码块转化成Swift)
  • 2:Convert File to Swift(将文件转化成swift语言)
  • 3:Paste as Swift (以Swift方式粘贴代码)

不同注册用户代码转化有大小限制:

  • 未注册用户: 1KB/每次 大概也就100代码不到吧
  • 注册未付费用户: 2KB/每次

选中代码转化成Swift快捷键配置

swift 3迁移到swift5 swift版本迁移指南_第1张图片

自动转化配置项介绍

功能丰富, 分别针对工程文件,静态库文件,部分OC代码转化后OC Swift混编的处理, PCH的处理,Xib/Storyboard处理,被转化后的swift文件被其他OC文件引用的处理,'\n'字符串的出里,以及是否需要将使用的静态库转化成动态库的处理等

文档列表都在这里

https://support.swiftify.com/hc/en-us/articles/360028372231-Update-Xcode-project-files

链接:

  • 更新桥接标题和PCH文件
  • 将前向类声明添加到头文件
  • 在转换后的文件顶部添加包含转换器版本号的标头
  • 重新排序顶级声明(将全局变量声明放在顶部)
  • 将“@objcMembers”属性添加到所有类声明中
  • 将包含'\ n'的所有字符串转换为Swift中的多行字符串
  • 将Xcode项目类型从“静态库”更改为“动态库”
  • 始终使用完全限定的枚举值
  • 使用默认值类型初始化没有初始值设定项的属性
  • 始终在变量declerations中明确指定类型名称(从不推断类型名称)
  • 在布尔属性中附加'is'前缀
  • 忽略属性名称中不必要的单词
  • 转换“受保护”Objective-C实例变量时要使用的访问修饰符

自动转化配置项

swift 3迁移到swift5 swift版本迁移指南_第2张图片

网页端转化链接:
https://objectivec2swift.com/#/converter/code/

swift 3迁移到swift5 swift版本迁移指南_第3张图片

相对于  swift3迁移swift4    swift3迁移swift5还是比较简单。

你可能感兴趣的:(swift 3迁移到swift5 swift版本迁移指南)