Swift5 新特性预览

RhysHarry 发布于3月前 阅读140次
0 条评论

Apple将在今年晚些时候大概秋季发布会发布Swift5,Swift5主要焦点在于ABI(Application Binary Interface)对于Swift标准库的稳定,下面介绍Swift5特性:

1.ABI稳定

1.1什么是ABI稳定

  • 在运行时Swift二进制文件通过ABI与其他的库与组件进行交互,他定义了底层的细节比如函数如何调用,数据如何在内存中呈现,元数据在哪里,以及如何访问等等。

  • 当前已发布的Swift版本中ABI还没稳定,所以每一个APP,都自己包含它Swift版本所对应的Swift Dynamic Library。Swift并没包含在操作系统中,他存在于每一个APP内部。

  • 这意味着任何一个App,比如APP1使用Swift3.0,那么它将包含Swift 3.0 动态库(3.0 ABI)在它内部,但是其他的APP比如APP2它使用Swift3.2,他将包含自己的3.2ABI.

  • 如果Swift ABI稳定下来,Swift将包含在iOS操作系统里边,它将兼容每一个Swift版本,比如APP1使用Swift5.0,但是App2使用Swift5.3,他们都将包含在iOS 内部。

1.2为什么是ABI稳定是重要的

  • Swift包 Size将变小

  • 语言将变化越小,不在那么频繁

  • 更小的迁移

  • 开发者将可以预编译好Frameworks(当前版本frameworks在 APP编译时编译)

1.3ABI稳定带来的缺点

限制公共接口和符号的变化

限制了Swift的迅速发展

2.Async/Await模式

2.1 Async

  • 异步方案在C#, Python, Javascript 中取得了巨大成功

  • Async关键字使用类似于现有的throws关键词

  • 声明一个异步函数内部为具有时序异步执行协同函数

2.2 Await

  • 类似于try关键词

  • 声明一个在某一时间点执行的函数,并获得执行结果

2.3 为什么使用Async/Await

  • 当执行多个操作创建复杂的逻辑时,目前版本异步api很low,比如错误处理,回调函数。

  • 当前版本的异步回调闭包让代码很丑陋。

  • 难以理解的队列/线程。

2.4 例子

为了展示Async/Await的优雅写法,这里以Cocoa开发者遇到的异步问题举例,比如下面的异步问题:

Swift5 新特性预览

现在你可以这样优雅的写

Swift5 新特性预览

3.Actors

  • Actor是DispatchQueue的组合,他的数据被这个队列保护,而且只能在这个队列运行

  • Actor是新的类型比如class, struct or protocol

  • Actor允许开发者定义内部变量和函数,在它内部处理数据或者做一些操作。

  • Actor没有参数和返回值,不能抛出错误

  • 开发者可以异步地与Actor进行通信,并且它保证他们保护的数据只被在该队列上运行的代码所访问

  • UIKit和AppKit会使用MainActor对“Main Thread”进行建模

  • 开发者可以定义MainActor的扩展,以便在主线程上运行他们的代码

  • Actor引用计数为0并且最后排队的消息完成时,Actor会释放。

  • 让我们想象一下,我们正在为具有带有字符串列表的tableview的应用程序构建数据模型。该应用程序具有添加和操作列表的UI。它可能看起来像这样:

Swift5 新特性预览

4.其他的优化

  • String优化,语言层面对正则表达式的支持,提高String性能

  • 标准库优化

  • Foundation优化

  • 语法添加

原文链接: https://www.developerinsider.in/what-will-be-new-in-swift-5/

查看原文: Swift5 新特性预览

  • bluelion
  • organicgoose
  • goldenlion
  • greengorilla
  • redcat
  • yellowladybug
  • heavyelephant
  • bluegorilla
需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。