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

感谢无明对本文的审校。


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

查看所有标签

猜你喜欢:

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

Head First HTML与CSS(第2版)

Head First HTML与CSS(第2版)

Elisabeth Robson、Eric Freeman / 徐阳、丁小峰 / 中国电力出版社 / 2013-9 / 98.00元

是不是已经厌倦了那些深奥的HTML书?你可能在抱怨,只有成为专家之后才能读懂那些书。那么,找一本新修订的《Head First HTML与CSS(第2版)》吧,来真正学习HTML。你可能希望学会HTML和CSS来创建你想要的Web页面,从而能与朋友、家人、粉丝和狂热的顾客更有效地交流。你还希望使用最新的HTML5标准,能够保证随时间维护和扩展你的Web页面,使它们在所有浏览器和移动设备中都能正常工......一起来看看 《Head First HTML与CSS(第2版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具