Swift 4.2正式发布

Swift4.2版本带来了语言和标准库的改进,包括更好的泛型、Hashable协议以及随机数生成。该版本实现了泛型条件一致性,允许在运行时查询类型以获得条件一致性,新增Enumcase的衍生集合功能,提供了更好的散列和类型安全的动态成员查找。Swift4.2还提升了编译器性能,支持使用#warning和#error指令进行代码标记。

在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  

\\

感谢无明对本文的审校。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值