Swift 4.2正式发布

栏目: Swift · 发布时间: 6年前

内容简介:在Swift 4发布了一年之后,Swift 4.2版本也在语言层面,Swift 4.2完成了从Swift 4.1Swift 4.2添加了在运行时查询类型来获得条件一致性的可能性,而这在Swift 4.1中会发生崩溃,例如:

在Swift 4发布了一年之后,Swift 4.2版本也 正式推出 。这一版本带来了语言和标准库方面的改进,包括更好的泛型、Hashable协议以及随机数生成。另外,Swift语言维护者Ted Kremenek写道,Swift 4能提供更快的编译速度,并提升了调试体验。

在语言层面,Swift 4.2完成了从Swift 4.1 开始的泛型条件一致性开发工作,它实现了一个规范,即某种类型必须满足某些条件才符合某种协议。例如:

extension Array: Equatable where Element: Equatable {
  static func ==(lhs: Array<Element>, rhs: Array<Element>) -> Bool { ... }
}

Swift 4.2添加了在运行时查询类型来获得条件一致性的可能性,而这在Swift 4.1中会发生崩溃,例如:

if let array = items as? Equatable { //– safely use == here }

Swift 4.2另外一个有用的功能是 Enum case 的衍生集合 ,可以通过.allCases属性迭代所有符合CaseIterable协议的case。

其他的改进包括提供一组新的API用于 随机数生成和重排更好 的散列 ,以及类型安全的 动态成员查

从调试前端来看,Swift编译器现在支持使用#warning和#error指令在代码中标记问题。例如:

#warning("Unsafe operation")
#error("Prodive your credentials here")

Kremenek还特别指出编译器性能获得了提升,这要归功于批处理模式编译和改进的运行时性能(因为对retain/release周期的调用发生了变化)。

另外,iOS开发人员Javier Soto在 推文 中写道:

一年之后,Swift 4.2版本的 KVO错误还是没有解决 。除非你想体验随机崩溃的感觉,否则不要在iOS程序中使用Swift KVO语法。

具体来说,当主线程尝试注册观察者(例如更新UI元素)的同时,在后台线程运行KVO keyPathsForValuesAffectingValue 方法可能就会触发这个bug。

对于所有受到影响的开发人员,可以使用 PMKVObserver ,它是安全强类型的Swift 4 KVO语法替代品。

Swift 4.2与Swift 4和3代码兼容,并被包括在Xcode 10中。通过 Swift Migrator工具 可以轻松实现从早先版本的迁移。

苹果公司在 WWDC 2018 发表 一个 40分钟 的演讲中 ,介绍了Swift 4的新特性概览,要了解更多详情,请参考官方公告。 Ole Begemann’s Swift 4.2 playground 是学习Swift 4.2新功能的一个很好的资源。

查看英文原文: Swift 4.2 Hits the Road

感谢无明对本文的审校。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解LINUX内核(第三版)

深入理解LINUX内核(第三版)

(美)博韦,西斯特 / 陈莉君;张琼声;张宏伟 / 中国电力出版社 / 2007-10-01 / 98.00元

为了彻底理解是什么使得Linux能正常运行以及其为何能在各种不同的系统中运行良好,你需要深入研究内核最本质的部分。内核处理CPU与外界间的所有交互,并且决定哪些程序将以什么顺序共享处理器时间。它如此有效地管理有限的内存,以至成百上千的进程能高效地共享系统。它熟练地统筹数据传输,这样CPU 不用为等待速度相对较慢的硬盘而消耗比正常耗时更长的时间。 《深入理解Linux内核,第三版》指导你对内核......一起来看看 《深入理解LINUX内核(第三版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器