在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\u0026lt;Element\u0026gt;, rhs: Array\u0026lt;Element\u0026gt;) -\u0026gt; Bool { ... }\}\\\
Swift 4.2添加了在运行时查询类型来获得条件一致性的可能性,而这在Swift 4.1中会发生崩溃,例如:
\\\\if let array = items as? Equatable { //– safely use == here }\\\
Swift 4.2另外一个有用的功能是Enumcase的衍生集合,可以通过.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
\\感谢无明对本文的审校。
Swift4.2版本带来了语言和标准库的改进,包括更好的泛型、Hashable协议以及随机数生成。该版本实现了泛型条件一致性,允许在运行时查询类型以获得条件一致性,新增Enumcase的衍生集合功能,提供了更好的散列和类型安全的动态成员查找。Swift4.2还提升了编译器性能,支持使用#warning和#error指令进行代码标记。
4302

被折叠的 条评论
为什么被折叠?



