Swift 4.2正式发布

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

内容简介:在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

感谢无明对本文的审校。


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

查看所有标签

猜你喜欢:

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

鲜活的数据

鲜活的数据

[美] Nathan Yau / 向怡宁 / 人民邮电出版社 / 2012-10-1 / 69.00元

在生活中,数据几乎无处不在,任我们取用。然而,同样的数据给人的感觉可能会千差万别:或冰冷枯燥,让人望而生畏、百思不解其意;或生动有趣,让人一目了然、豁然开朗。为了达到后一种效果,我们需要采用一种特别的方式来展示数据,来解释、分析和应用它。这就是数据可视化技术。Nath an Yau是这一创新领域的先锋。在本书中,他根据数据可视化的工作流程,先后介绍了如何获取数据,将数据格式化,用可视化工具(如R)......一起来看看 《鲜活的数据》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

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

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试