Swift 4.2正式发布

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

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

感谢无明对本文的审校。


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

查看所有标签

猜你喜欢:

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

复杂性思考

复杂性思考

Allen B. Downey / 张龙 / 机械工业出版社 / 2013-5 / 49.00元

本书的灵感来源于无聊与迷恋的感觉:对常规的数据结构与算法介绍的无聊,对复杂系统的迷恋。数据结构的问题在于教师在教授这门课程的时候通常不会调动起学生的积极性;复杂性科学的问题在于学校通常不会教授这门课程。 2005年,我在欧林学院讲授了一门新课程,学生要阅读关于复杂性的主题,使用Python进行实验,并学习算法与数据结构。当我在2008年再次讲授这门课程时,我写了本书的初稿。 在2011......一起来看看 《复杂性思考》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

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

正则表达式在线测试