在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

\\

感谢无明对本文的审校。

Swift 4.2正式发布相关推荐

  1. Swift 3 新特性

    原文:What's New in Swift 3? ,作者:Ben Morrow,译者:kmyhy Swift 3将于今年下半年推出,为Swift开发者们带来了很多核心代码的改变.如果你没有关注过 S ...

  2. 百度App Objective-C/Swift 组件化混编之路(一)

    作者丨郭金.陈佳 来源丨百度App技术 一. 背景 1.1 Swift 发展历史 2010 年 7 月,克里斯(Chris Lattner)开始设计 Swift.完成基础架构后,克里斯带领开发小组陆续 ...

  3. Swift 3 中的新特性

    原文:What's New in Swift 3? 作者: Ben Morrow 译者:kmyhy Swift 3 将在下半年推出,对于 Swift 程序员来说,它带来了许多改变. 如果你没有密切关注 ...

  4. 开放下载!《iOS开发者必读资讯》

    简介:对于开发者和程序员来说,对 WWDC 20 我们有哪些新发现和新思考?淘系技术客户端团队将从Swift语言.metal的变化.中间件相关的-网络技术相关.隐私适配等各个话题,来系统输出我们的关注 ...

  5. 老司机 iOS 周报 #37 | 2018-09-24

    老司机 iOS 周报,只为你呈现有价值的信息. 你也可以为这个项目出一份力,如果发现有价值的信息.文章.工具等可以到 Issues 里提给我们,我们会尽快处理.记得写上推荐的理由哦.有建议和意见也欢迎 ...

  6. swift4 linux,Swift 4正式发布,新功能概览

    Swift最新的主要版本提供了针对语言本身以及标准库的大量改动和更新,最重要的变化包括新增的String功能.扩展集合.归档和序列化等. Swift 4中,String已全面遵循Collection协 ...

  7. Swift 4正式发布,新功能概览

    Swift最新的主要版本提供了针对语言本身以及标准库的大量改动和更新,最重要的变化包括新增的String功能.扩展集合.归档和序列化等. \\ Swift 4中,String已全面遵循Collecti ...

  8. Swift 5进入发布倒计时

    在正式发布Swift 4.2之后,Swift团队现在启动了发布过程的最后阶段,把注意力集中在了Swift 5上.Swift 5计划于2019年初发布,其目标是在保持源代码兼容性的同时,实现ABI稳定性 ...

  9. Swift 开源带来的思考

    苹果全球开发者大会总能掀起一股旋风,虽然今年大会的"猛料"不如往期,但Swift在今年晚些时候开源的消息,却足以赚足开发者眼球. 其实苹果的行事风格,我还是蛮喜欢的:"苹 ...

最新文章

  1. oracle 存储过程的基本语法
  2. R learning 十八讲 0018-R语言绘图基础
  3. 为什么升级不了android版本,为啥你的手机无法升级到安卓7.0?原因都在这里!...
  4. python条码识别
  5. 积极开展网络营销的AI换脸软件短短几日经历了从爆红到下架
  6. junit5和junit4_JUnit 5 –架构
  7. 在VirtualBox里复制VDI文件[转]
  8. 《团队激励与沟通》第 8 讲——团队合作技巧 重点部分总结
  9. java实现保存一张图片_Java图片剪裁并保存的代码实现
  10. struts启动过滤器异常_Spring 统一异常处理的方式
  11. mysql中gtid关闭方法_CDH-mysql 开启关闭 gtid
  12. 谈谈JS的全局变量跟局部变量
  13. HTML将广告关闭的JS代码,带关闭漂浮广告代码_漂浮广告js代码_漂浮窗口模式关闭...
  14. SEO与SEM的区别和联系
  15. 基于jsp+mysql+Spring+SpringMVC+mybatis的ssm乐轩公司订餐系统
  16. 常用广告过滤规则整理
  17. 树莓派4B安装中文拼音输入法
  18. 解决Android 10+无法创建文件问题
  19. 怎样提取网页视频中的音频文件
  20. 微信小程序怎么样与mysql一起开发_莲米粒是一个基于PHP+MySQL+微信小程序技术栈...

热门文章

  1. 【Flutter】如何写一个Flutter自动打包成iOS代码模块的脚本
  2. Mongodb部署记录[3]-主从搭建
  3. 开源 java CMS - FreeCMS2.8 数据对象 applyopen
  4. 量子计算竞速时代,如何拨动时间的指针
  5. CSS 同级元素浮动分析小结
  6. 【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?...
  7. MobileNet教程(2):用TensorFlow搭建安卓手机上的图像分类App
  8. Visual Studio 2010生成SQL Server测试数据
  9. 好程序员三期Android高端班开班典礼-乱世看我称雄
  10. Ext4 MVC CRUD操作