余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

Swift 3.1 更新了什么(swift 5.3)

xiyangw 2022-12-04 10:12 14 浏览 0 评论

原文出自:

FishYan的博客:http://fishyan.me

Swift 3.1 更新了什么(swift 5.3)

FishYanCSDN:http://blog.csdn.net/fish_yan_?viewmode=list

本文外部链接较多,推荐查看源博客内容。

Swift 3.1 于3月27发布更新,是一个小版本更新,其中主要包含对标准库的改进,Swift对Linux的更新,和Swift软件包管理器的更新。

语言更新

Swift 3.1 属于小版本更新,兼容 Swift 3.0 版本,但是 Xcode 8.3 已经不再支持 Swift 2.3 。

它主要包含以下更新,主要是对 Swift Evolution Process 的更新

新增Sequence协议成员

该Sequence协议现在有两个新成员:

protocol Sequence { // ...

这两个函数的意思正好相反,

prefix(while:) 返回满足某 predicate 的最长子序列。从序列的开头开始,并且在第一个从给定闭包中返回 false 的元素处停下。

drop(while:) 做相反的操作:从第一个在闭包中返回 false 的元素开始,直到序列的结束,返回此子序列。

举例:

let array = [1,5,3,7,4,6,5,8,9,10]let interval = array.prefix(while: {$0 < 6})print(interval) // [1, 5, 3] 遇到 7 > 6 return false 时停止let interval1 = array.drop(while: {$0 < 6})print(interval1) // [7, 4, 6, 5, 8, 9, 10] 遇到 7 > 6 return false 时开始

请参见:SE-0045:Add prefix(while:) and drop(while:) to the stdlib

Swift3.1扩展了@availability

Swift 3.1将@availability属性扩展为使用Swift版本来指示声明的使用范围。例如,在Swift 3.1中删除的API将被写为:

@available(swift, obsoleted: 3.1)class Foo { //...}

查看更多:SE-0141:Availability by Swift version

改进的数字转换初始化器

Swift 3.1 为所有的数字类型 (Int, Int8, Int16, Int32, Int64, UInt, UInt8, UInt16, UInt32, UInt64, Float, Float80, Double) 实现了可失败初始化方法,要么完全成功、不损失精度,要么返回 nil ;

举个例子:

let a: Double = 2.22let b = Int(exactly: a) // nil, Swift 3.1 新增let c = Int(a) // 2

请参见:SE-0080:Failable Numeric Conversion Initializers

废弃和替换UnsafeMutablePointer.initialize(from :)

将采用 Collection 的 UnsafeMutablePointer.initialize(from:) 替换为采用 Sequence 的 UnsafeMutableRawBufferPointer.initialize(as:from:) 以提高内存安全性和实现更快的存储速度

查看更多在:SE-0147:Move UnsafeMutablePointer.initialize(from:) to UnsafeMutableBufferPointer

改进Linux实现

  • 实现 NSDecimal

  • 实现 NSLengthFormatter

  • 实现 Progress

  • 对URLSession的功能进行较多的改进,包括 API 和 优化 libdispatch 的使用。

  • 改进API包含NSArray,NSAttributedString等

  • 显着提高 Data 性能。查看更多细节

  • 改进 JSON 序列化性能

  • 固定内存泄漏 NSUUID,NSURLComponents 等

  • 改进的单元测试,尤其是 URLSession

软件包管理器更新

可编辑包

默认情况下,软件包依赖文件是放在工具管理的目录中,新的swift package edit命令允许用户在软件包上进行编辑,并让用户控制(在Packages目录),免除依赖关系更新,并允许用户提交并将更改推送到该包。

查看更多信息:SE-0082: Package Manager Editable Packages

版本锁定

您使用的每一个依赖包的版本都会记录在Package.pins文件中,可以签入,以便与其他用户共享这个版本的依赖包; 可以通过 swift package pin和swift package unpin 进行控制。在解析依赖关系时,默认情况下取消包的依赖关系的固定版本,但 swift package update 会为你的项目添加最新的依赖包。

请参见:SE-0145:Package Manager Version Pinning

工具版本

软件包现在可以指定所需Swift工具的最低版本。该要求可以用swift package tools-version命令编辑,并记录在 Package.swift 的顶部。相对于那些将要被忽略的依赖,软件包版本需要新的 Swift 工具,因此软件包可以采用新的Swift功能,而不会破坏正在使用旧版Swift工具的客户端。所需的最低工具版本决定了哪些Swift语言版本用于编译 Package.swift ,以及哪个版本的 PackageDescription API可用。

查看更多信息:SE-0152:Package Manager Tools Version

Swift语言兼容版本

软件包现在可以指定它们的来源是以Swift 3或Swift 4语言版本编写的。如果未指定,则从软件包的最小Swift工具版本推断出默认值。

查看更多信息:SE-0151:Package Manager Swift Language Compatibility Version

其他包管理器改进

  • 修正了以前版本所存在的一些问题。在构建过程中检测依赖关系周期,并且尽可能少的修改源文件。

  • swift test现在支持--parallel标签并行运行测试。swift build,swift test和swift package命令现在支持--enable-prefetching标签并行地获取这些依赖关系。

可以在文档库中找到Swift Package Manager。

迁移到Swift 3.1

Swift 3.1与Swift 3.0兼容。为了帮助从Swift的早期版本迁移到Swift 3.1,Xcode 8.3包含一个代码迁移器,可以自动处理大多需要修改的源代码。还有一个迁移指南来指导您完成其他的修改。

相关推荐

Java api中文版,离线下载,提供百度,谷歌,有道三个版本
Java api中文版,离线下载,提供百度,谷歌,有道三个版本

Java1.8帮助文档中文–谷歌版在线版:https://blog.fondme.cn/apidoc/jdk-1.8-google/下载链接:http:...

2023-03-21 19:57 xiyangw

Java学习——5、Jdk的下载和安装(Java学习——5、Jdk的下载和安装)

视频加载中......

Linux/Windows系统安装JAVA教程(linux安装教程)
Linux/Windows系统安装JAVA教程(linux安装教程)

说明:我们很多时候都需要用到JAVA环境,这里博主就记录下安装过程,目前最新版JAVA为10.0.2。1、获取最新版JAVA下载链接首先进入JAVA下载地址:点...

2023-03-21 19:56 xiyangw

初识Java(初识年岁尚温柔轻)

1.什么javaJava是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承,指针等概念,因此Java语言具有强大的功能和简单易用的两个特征,Java语言作为静态...

Java文件上传与下载(java文件上传下载io流)

基础环境:springboot2.X+jdk1.8+hutool工具包文件上传1.其中首行path由yml文件配置2.如果是linux系统,需要更改为/data/usr这种格式。3.返回体...

简单几步教你免费玩到JAVA版我的世界,电脑小白也能做到

为了免费玩到游戏,我们需要一个(第三方)启动器,这里以广受好评的HMCL启动器(免费的)为例1.HMCL是由Java语言制作的,所以我们需要先下载安装JAVA,打开浏览器,访问java.com进...

关于java文件下载的思路(关于java文件下载的思路是什么)

今天在一个群里扯了半天的给一个初入职场的新手解释文件下载的问题,在此来总结下。文件下载有两种方式:静态文件下载静态文件直接下载,设置下响应头即可。//请求路径dowload@RequestMappi...

Java基础视频教程:第十二节:JDK的下载过程图解
Java基础视频教程:第十二节:JDK的下载过程图解

Java基础视频教程:第十二节:JDK的下载过程图解视频加载中...想要了解更多Java知识那就来关注我们吧!精彩内容多多哦!不从错过哦!多多关注...

2023-03-21 19:55 xiyangw

java web项目如何批量下载文件(java批量下载多线程)

背景:根据浏览器的不同,下载文件需要的插件也有所不同,同时在下载个数的也有要求,比如IE浏览器,下载文件的个数如果超过50,则会出现问题。以下介绍一个不依赖任何插件。跨浏览器的实现是方式。import...

JAVA FTP上传/下载文件(Hutool使用)(java sftp 上传 下载)

轻松愉快搞定ftp上传下载文件,这里推荐使用hutool的工具类,本人实测超级好用几行代码搞定。1、项目maven引入hutool依赖包,我这里用的5.3.4的包<dependency>...

Windows/MacOS下Java开发环境的安装和配置详细教程
Windows/MacOS下Java开发环境的安装和配置详细教程

第一步:下载和安装JDKJDK(JavaDevelopmentKit)是Java开发所必须的工具包,它包含了Java编译器、Java虚拟机和其他必要的工具。...

2023-03-21 19:53 xiyangw

Java JDK下载与安装教程(jdk的下载与安装教程)

下载JDK:访问Oracle官网(www.oracle.com)下载最新版本的JDK,根据系统位数(32位或64位)选择下载。安装JDK:双击下载的安装包,按照安装向导安装即可。配置环境变量:在系统变...

前端安全之XSS(前端安全策略有哪些)

前言在了解xss漏洞之前,先了解同源策略,同源要求的是同协议、同域名、同端口才能算作同一个源站,才可以互相访问资源获取资源内容,但是现代互联网中,有很多第三方的js需要加载到自己的站点下,比如百度统计...

JavaScript 的这个难点,毁掉了多少程序员?(javascript 坑)
JavaScript 的这个难点,毁掉了多少程序员?(javascript 坑)

1、this适合你吗?我看到许多文章在介绍JavaScript的this时都会假设你学过某种面向对象的编程语言,比如Java、C++或Pytho...

2023-03-21 19:52 xiyangw

如何禁止JavaScript对象重写(js怎样禁止页面另存为)
如何禁止JavaScript对象重写(js怎样禁止页面另存为)

由于JavaScript的灵活性,我们可以轻易地重写(override)一些于其他人定义的对象(object)。换句话说,任何人都可以重写我们所定义的对象。这是...

2023-03-21 19:52 xiyangw

取消回复欢迎 发表评论: