Swift4现已正式发布!Swift4在Swift3的基础上,提供了更强大的稳健性和稳定性,为Swift3提供源码兼容性,对标准库进行改进,并添加了归档和序列化等功能。

你可以通过观看WWDC2017:What’sNewinSwift完整发行说明快速了解Swift4功能概述。

一、语言更新

String

Swift4包含一个更快、更易使用的String实现,保留了Unicode的正确性,并新增了对创建、使用和管理子字符串的支持。

详情:

集合

Swift4改进了创建、使用和管理集合类型。

详情:

归档和序列化

Swift4支持结构化和枚举类型的归档,并可以对外部格式(如JSON和plist)进行类型安全的序列化。

详情:

其他

二、新兼容模式

Swift4发布后,你可能不需要修改代码就可以使用新版本的编译器。编译器支持两种语言模式:

  • Swift3.2:这种模式下,编译器将接受使用Swift3.x编译器构建的大多数源代码。为了提供这种级别的源兼容性,先前存在的API(作为Apple提供的标准库或API的一部分)的更新将不会出现在此模式中。Swift4中的大部分新语言特性都以这种语言模式提供。

  • Swift4.0:此模式包含所有Swift4.0语言和API更改,部分项目可能需要进行源迁移。

语言模式由-swift-version指定给编译器,由Swift包管理器和Xcode自动处理。

详情:

三、包管理器升级

Swift4为SwiftPackageManager引入了新的工作流功能和更完整的API:

  • 在Tag你的第一个正式版本之前,可以轻松多包开发,或者在多个软件包的分支上一起工作。

  • 可选择控制发布给用户的包。

  • 新的PackageAPI允许软件包指定一些新的设置,使作者能够更好地控制软件包的构建方式,以及如何在磁盘上组织源码。总的来说,用于创建包的API现在更为清晰,同时保留了与旧包的源兼容性。

  • 在macOS上,Swift软件包的构建现在会在一个防止网络访问和文件系统修改的沙箱中进行,有助于减轻恶意程序的影响。

详情:

四、相关地址

文档

  • Swift4.0相关文档已在官网更新,在苹果的iBooks商店也可免费下载。

下载

Swift 4.0 正式发布,更快更兼容更好用的更多相关文章

  1. Nvidia发布更快、功耗更低的新一代图形加速卡

    导读 不出意外的,Nvidia在其举行的Supercomputing 19大会上公布了很多新闻,这些我们将稍后提到.但被忽略的一条或许是其中最有趣的:一张更快.功耗更低的新一代图形加速卡. 多名与会者 ...

  2. FreeNAS 11.0 正式发布,提供 S3 兼容的对象存储服务

    FreeNAS 11.0 正式版已发布,该版本带来了新的虚拟化和对象存储功能.FreeNAS 11.0 将 bhyve 虚拟机添加到其受欢迎的 SAN / NAS.Jail 和插件中,让用户可以在 F ...

  3. 三表联查,这是我目前写过的最长的sql语句,嗯嗯,果然遇到问题才能让我更快成长,更复杂的语句也有了一些心得了

    select sum(amount),sum(card_number) from sy_user inner join sy_admin on sy_user.customer_id=sy_admin ...

  4. 更快学习 JavaScript 的 6 个思维技巧

    更快学习 JavaScript 的 6 个思维技巧 我们在学习JavaScript,或其他任何编码技能的时候,往往是因为这些拦路虎而裹足不前: 有些概念可能会造成混淆,尤其当你是从其他语言转过来的时候 ...

  5. C# String.Join 与 StringBuilder 对比,谁更快

    String.Join 文档      StringBuilder 文档 这两天刷 Leedcode 做到一道 String 的题时突然想到这俩对比的问题,于是查了一下资料并简单对比了一下. 首先对于 ...

  6. vue3.0和2.0的区别,Vue-cli3.0于 8月11日正式发布,更快、更小、更易维护、更易于原生、让开发者更轻松

    vue3.0和2.0的区别Vue-cli3.0于 8月11日正式发布,看了下评论,兼容性不是很好,命令有不少变化,不是特别的乐观vue3.0 的发布与 vue2.0 相比,优势主要体现在:更快.更小. ...

  7. Twitter Bootstrap 3.0 正式发布,更好地支持移动端开发

    Twitter Bootstrap 3.0 终于正式发布了.这是一个圆滑的,直观的和强大的移动优先的前端框架,用于更快,更容易的 Web 开发.几乎一切都已经被重新设计和重建,更好的支持移动端设备. ...

  8. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...

  9. 【转】实战USB接口手机充电 看3.0/2.0谁更快

    原文网址:http://mb.it168.com/a2012/0816/1385/000001385641_all.shtml [IT168 应用]当下,越来越多的电脑都已普及USB 3.0接口,新买 ...

随机推荐

  1. asp.netcore di 实现批量接口注入

    废话少说,先上代码 public static Dictionary<Type, Type[]> GetImpleAndInterfaces(string assemblyName,str ...

  2. Java 的基本语法

    Java 语言严格区分大小写 一个 Java 源文件里可以定义多个类,但其中只能有一个类被定义为 public 类 如果源文件中包含了 public 类,源文件的名称必须和该 public 类同名 p ...

  3. Oracle Management Packs

    http://kerryosborne.oracle-guy.com/2008/10/oracle-management-packs/ There has been quite a bit of co ...

  4. leetcode653

    class Solution { public: bool findTarget(TreeNode* root, int k) { queue<TreeNode> Q; vector< ...

  5. 关于使用字库-雅黑字体(msyh.ttf )显示中文的一些。。。

    开发中有关程序在使用字库 雅黑字体的 的时候 vs下一开始没有显示出中文来,都是乱码. 在android下使用该字体库的时候同样也没有显示出中文,后来搜搜了原因,得知编码必须是UTF-8 也就是使用字 ...

  6. Synchronized关键字、Lock,并解释它们之间的区别

    Synchronized 与Lock都是可重入锁,同一个线程再次进入同步代码的时候.可以使用自己已经获取到的锁. Synchronized是悲观锁机制,独占锁.而Locks.ReentrantLock ...

  7. UML在实践中的现状和一些建议

    本文是我在csdn上看到的文章,由于认识中的共鸣,摘抄至此. 原文地址:http://blog.csdn.net/vrman/article/details/280157 UML在国内不少地方获得了应 ...

  8. C++指针作为函数的参数进行传递时注意的问题

    应注意问题: 当指针作为函数的参数进行传递的时候,本质上还是进行的"值传递",也就是复制了一个新的指向该地址的指针变量. 只有在被调函数中,对指针进行引用操作,才可以达到不需要返回 ...

  9. Tensorflow学习—— AdamOptimizer

    import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data #载入数据集mnist = inpu ...

  10. 25-Fibonacci(矩阵快速幂)

    http://poj.org/problem?id=3070     Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...