Swift 版本历史记录
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
更新至 Swift 5.7。
新增 章节,其中包含在 actors 和任务间发送数据的内容。在 章节和 章节新增了有关特性 @Sendable
和 @unchecked
的内容。
新增了 章节,其中包含新建正则表达式的内容。
在 章节新增了 if-let
结构更简短的一种形式。
在 章节新增了与不可用性检查 #unavaliable
有关的内容。
更新至 Swift 5.6
更新了 章节,现在可以在链式调用方法和其它后缀表达式周围使用 #if
了。
更新 篇章里的示例,使用当前的并发 API。
更新至 Swift 5.5。
在 篇章、、 和 中新增了有关异步函数、任务和 actor 的内容。
更新至 Swift 5.4。
更新至 Swift 5.3。
更新至 Swift 5.2。
更新至 Swift 5.1。
更新至 Swift 5。
更新至 Swift 4.2。
更新至 Swift 4.1。
更新至 Swift 4.0.3。
更新至 Swift 4.0。
更新至 Swift 3.1。
更新至 Swift 3.0.1。
更新至 Swift 3.0。
更新一些讨论,使用 macOS 替换掉 OS X, Error 替换掉 ErrorProtocol。更新一些协议名称,比如使用 ExpressibleByStringLiteral 替换掉 StringLiteralConvertible。
更新动态类型表达式章节中使用新的 type(of:)
表达式的讨论。
更新至 Swift 2.2。
删除 C 语言风格的 for
循环,++
前缀和后缀运算符,以及 --
前缀和后缀运算符。
删除对变量函数参数和柯里化函数的特殊语法的讨论。
更新至 Swift 2.1。
更新至 Swift 2.0。
更新至 Swift 1.2。
协议类型转换不再局限于 @obj
修饰的协议了。
更新至 Swift 1.1。
常量和变量的 Any
类型现可以包含函数实例。更新了有关 Any
相关的示例来展示如何在 switch
语句中如何检查并转换到一个函数类型。
描述 Swift 1.0 的新文档。Swift 是苹果公司发布的全新编程语言,用于 iOS 和 OS X 应用开发。
新增更多有关柯里化函数的内容。
NSString
length
属性已被映射到 Swift 的内建 String
类型。(注意,这两属性的类型是utf16Count
,而非 utf16count
)。
新增 和 章节,其中包含结果构造器的内容。
新增 章节,其中包含在函数调用时输入输出形参可以隐式转换到不安全指针的内容。
更新 和 章节,现在函数可以有多个可变参数了。
更新 章节,现在可以链式调用隐式成员表达式了。
在 章节中新增了有关多个尾随闭包的内容,在 章节中新增了有关尾随闭包如何匹配形参的内容。
在 章节中新增了枚举合成实现 Comparable
的内容。
新增 章节,现在可以在更多位置编写范型 where
分句。
新增 章节,其中包含可选值使用无主引用的内容。
在 章节中新增有关 @main
特性的内容。
在 章节中新增 #filePath
,并更新了 #file
的讨论。
更新 章节,现在闭包可以在更多场景隐式引用 self
。
更新 和 章节,现在 catch
子句可以匹配多个错误。
新增更多有关 Any
的内容并移动到新增的 章节。
更新 章节,现在 lazy 属性可以有观察器。
更新 章节,现在枚举的成员可以用于遵循协议的要求。
更新 章节,描述观察器之前 getter 是何时被调用的。
更新 篇章并提及原子操作。
在 章节中新增了有关传递 key path 代替闭包的内容。
在 章节中新增了有关让类、结构体和枚举的实例作为函数调用语法糖的内容。
更新 章节,现在下标支持形参默认值。
更新 章节,现在 Self
可以在更多上下文中使用。
更新 章节,明确了隐式解析可选值可以作为可选值或者非可选值使用。
在 篇章中新增了有关函数返回值遵循指定协议,而不需要提供指定返回类型的内容。
在 章节中新增了有关属性包装器的内容。
在 章节中新增了有关因库演变而需要的枚举和结构体冻结。
新增 和 章节,其中包含函数省略 return
的内容。
在 章节中新增了有关在类型中使用下标的内容。
更新 章节,现在枚举 case 模式匹配支持匹配可选值。
更新 章节,现在逐一成员构造器支持在属性有默认值时省略形参。
在 章节中新增了有关在运行时用 key path 查找动态成员的内容。
在 中的目标环境里添加了 macCatalyst
。
更新 章节,现在 Self
可以指向当前类,结构体或者枚举声明时的类型。
新增 章节。更新 章节,拓展有关字符串分隔符的内容。
新增 章节,其中包含使用 dynamicCallable
属性动态调用实例作为函数的内容。
新增 和 章节,其中包含了使用 unknown
来处理未来枚举可能发生改变的情形。
在 章节新增了有关标示 key path (\.self) 的内容。
在 章节新增了有关小于比较符 <
的内容。
在 章节新增了有关访问所有枚举情形的内容。
在 章节新增了有关 #error
和 #warning
的内容。
在 章节中新增了有关 inlinable
和 usableFromInline
属性的内容。
在 章节中新增了有关 requires-stored-property-inits
和 warn-unqualified-access
属性的内容。
在 章节新增了有关如何根据 Swift 编译器版本对代码进行对应编译处理的内容。
在 章节新增了有关 #dsohandle
的内容。
在 章节新增了有关等价运算符的合成实现的内容。
在 篇章中 章节和 篇章中 章节新增了有关协议有条件遵循的内容。
在 章节中新增了有关递归协议约束的内容。
在 章节中新增了有关 canImport()
和 targetEnvironment()
平台条件的内容。
更新 章节,现在 key path 支持下标子路径。
在 章节新增了有关内存互斥访问的内容。
新增 章节,现在可以使用泛型 where
子句约束关联类型。
在 篇章中 章节以及 篇章的 章节中新增了有关多行字符串字面量的内容。
更新 中 objc
属性的讨论,现在该属性会在更少的位置被推断出来。
新增 章节,现在下标也支持范型特性了。
更新 篇章中 章节和 篇章中 章节的讨论,现在协议组合类型支持进行父类约束了。
更新 中有关协议扩展的讨论,现在它们不支持 final
特性了。
在 章节中新增了部分前置条件和致命错误的内容。
新增 章节,包含需要的扩展内容。
在 章节中新增了区间迭代的例子。
在 章节中新增了可失败数值转换的例子。
在 章节中新增了有关使用 Swift 语言版本的 available
特性的内容 。
更新 章节中的讨论,注意在写函数类型时不允许使用参数标签。
更新 章节中的 Swift 语言版本号的讨论,现在可以使用可选的补丁版本号。
更新 章节的讨论,现在 Swift 区分了采用多参数的函数和采用元组类型的单个参数的函数。
在 篇章中删除了动态表达式的章节,现在 type(of:)
是 Swift 标准库函数。
更新 章节中有关 weak 和 unowned 引用的讨论。
在 章节中新增了有关新的标识符 unowned
,unowend(safe)
和 unowned(unsafe)
的内容。
在 章节中新增了一处说明,有关使用类型 Any
作为可选值。
更新 章节,把括号表达式和元组表达式的描述分开。
更新 篇章和 章节中有关函数的讨论,所有函数参数默认都有函数标签。
更新 篇章中有关操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。
在 章节中新增有关对新的访问级别描述符 open
和 fileprivate
的内容。
更新 章节中有关 inout
的讨论,注意它现在出现在参数类型的前面,而不是在参数名称的前面。
更新 和 章节还有 篇章中有关 @noescape
和 @autoclosure
的讨论,现在他们是类型属性,而不是定义属性。
在 篇章中 章节和 篇章中 章节中新增了有关操作符优先级组的内容。
更新 篇章中 章节和 篇章的讨论,现在泛型的 where 语句写在一个声明的最后。
更新 章节中的讨论,现在闭包默认为非逃逸的。
更新 篇章中 章节和 篇章中 章节中的讨论,现在 if,while
和 guard
语句使用逗号分隔条件列表,不需要使用 where
语句。
在 篇章中 章节和 篇章中 章节中新增了 switch cases 可以使用多模式的内容。
更新 章节有关现在函数参数标签不包含在函数类型中的讨论。
更新 篇章中 章节和 篇章中 章节中有关使用新的 Protocol1 & Protocol2 语法的内容。
更新 章节中使用 #sourceLocation(file:line:)
表达式的讨论。
更新 章节中使用 新的 Never
类型的讨论。
在 章节中新增了有关 playground
字面量的内容。
更新 章节,标明只有非逃逸闭包能捕获 in-out
参数。
更新 章节,现在默认参数不能在调用时候重新排序。
更新 篇章中有关属性参数使用分号的说明。
在 章节中新增了有关在 catch 代码块中抛出错误的重新抛出函数的内容。
在 章节中新增了中有关访问 Objective-C 中 Selector 的 getter 和 setter 的内容。
在 章节中中新增了有关泛型类型别名和在协议内使用类型别名的内容。
更新 章节中有关函数类型的讨论,标明函数类型作为参数类型必须使用括号包裹。
更新 篇章,标明 @IBAction
,@IBOutlet
和 @NSManaged
隐式含有 @objc
属性。
在 章节中新增了有关 @GKInspectable
的内容。
更新 章节中有关只能在与 Objective-C
交互的代码中才能使用可选协议要求的内容。
删除 章节中有关显式使用 let
关键字作为函数参数的内容。
删除 章节中有关 Boolean
协议的内容, 现在这个协议已经被 Swift 标准库删除。
更正 章节中有关 @NSApplicationMain
协议的内容。
在 章节新增了中有关如何根据 Swift 版本进行条件编译。
在 章节中新增了有关如何区分只有参数名不同的方法和构造器的内容。
在 章节中新增了了针对 Objective-C 选择器的 #selector
语法。
更新 和 章节中有关使用 associatedtype
关键词修饰关联类型的讨论。
更新 章节中有关当构造器在实例完全初始化之前返回 nil
的相关内容。
在 章节中新增了比较元组的内容。
在 章节中新增了使用关键字作为外部参数名的内容。
更新 章节中有关 @objc
特性的讨论,并指出枚举和枚举用例。
更新 章节中对于自定义运算符的包含了 .
的讨论。
在 章节中新增了一处说明,重新抛出错误函数不能直接抛出错误。
在 章节中新增了一处说明,当作为 in-out 参数传递属性时,属性观察器的调用行为。
在 篇章中新增了错误处理的章节。
更新 章节中的图片用以更清楚的展示重新分配过程。
更新 和 章节,现在字符串插值可包含字符串字面量。
在 章节中新增了有关 @noescape
属性的相关内容。
更新 和 章节中与 tvOS 相关的内容。
在 章节中新增了与 in-out 参数行为相关的内容。
在 章节新增了有关指定闭包捕获列表被捕获时捕获值的相关内容。
更新 章节,阐明了如何通过可选链式调用进行赋值。
改进 章节中对自闭包的讨论。
在 篇章中新增了一个使用 ??
操作符的例子。
在 篇章中新增了有关错误处理的相关内容,包括 、 、 以及 。
更新 章节,现在所有类型都可以遵循 ErrorType
协议了。
在 篇章增加了 try?
关键字相关内容。
在 篇章的 章节以及以及 篇章的 章节中新增了递归枚举相关内容。
在 篇章的 章节和 篇章的 章节中新增了有关 API 可用性检查相关的内容。
在 篇章的 章节和 篇章的 章节新增了与 guard
语句相关的内容。
在 篇章中 章节中新增了有关协议扩展的内容。
在 篇章的 章节中新增了有关单元测试访问控制相关的内容。
在 篇章的 章节中新增了可选模式相关内容。
更新 章节中有关 repeat-while
循环相关的内容。
更新 章节,现在 String
类型在 Swift 标准库中不再遵循 CollectionType
协议。
在 章节中新增了新 Swift 标准库中有关 print(-:separator:terminator)
相关内容。
在 篇章的 章节和 篇章的 章节中新增了有关包含 String
原始值的枚举用例的行为相关内容。
在 章节中新增了有关 @autoclosure
特性的相关内容,包括它的 @autoclosure(escaping)
形式。
更新 章节中有关 @avaliable
和 warn-unused-result
特性的相关内容。
更新 章节中有关 @convention
特性的相关内容。
在 章节中新增了有关使用 where
子句进行多可选绑定的相关内容。
在 章节中新增了有关在编译时使用 +
运算符拼接字符串字面量的相关内容。
在 章节中新增了有关元类型值的比较和使用它们通过构造器表达式构造实例相关内容。
在 章节中新增了一处说明,有关用户定义断言何时会失效。
更新 章节中对 @NSManaged
特性的讨论,现在这个特性可以被应用到一个确定实例方法。
更新 章节,现在可变参数可以声明在函数参数列表的任意位置中。
在 章节中新增了有关非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。
在 章节中新增了有关枚举用例作为函数的内容。
在 章节中新增了有关显式引用一个构造器相关内容。
在 章节中新增了有关编译内容以及行控制语句相关内容。
在 章节新增了一处说明,有关如何从元类型值中构造类实例相关内容。
在 章节新增了一处说明,有关弱引用作为缓存所存在的不足。
更新 章节,提到了存储型特性其实是懒加载。
更新 章节,阐明了变量和常量在闭包中如何被捕获。
更新 章节,用以描述何时在类中使用 @objc
关键字。
在 章节中新增了一处说明,有关执行 throw
语句的性能。在 章节的 do 语句部分也新增了类似内容。
更新 章节中有关类、结构体和枚举的存储型和计算型特性相关的内容。
更新 章节中有关带标签的 break 语句相关内容。
在 章节更新了一处说明,用来明确 willSet
和 didSet
观察器的行为。
在 章节新增了有关 private
作用域的相关内容说明。
在 章节新增了有关弱应用在垃圾回收系统和 ARC 之间的区别的说明。
更新 章节,对 Unicode 标量更精确定义。
Swift 现在自身提供了一个 Set
集合类型,更多内容,请看 。
@autoclosure
现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性 @noescape
。更多内容,请看 。
对于类型属性和方法现在可以使用 static
关键字作为声明描述符,更多内容,请看 。
Swift 现在包含一个 as?
和 as!
的向下可失败类型转换运算符。更多内容,请看 。
新增 的新指导章节。
在 一节中删除了溢出除运算符(&/
)和求余溢出运算符(&%
)。
更新常量和常量属性在声明和构造时的规则,更多内容,请看 。
更新字符串字面量中 Unicode 标量集的定义,请看 。
更新 章节,注意当半开区间运算符含有相同的起止索引时,其区间为空。
更新 章节,对于变量的捕获规则进行了阐明。
更新 章节,对有符号整数和无符号整数的溢出行为进行了阐明。
更新 章节,对协议声明时的作用域和成员等内容进行了阐明。
更新 章节,对于闭包捕获列表中的弱引用和无主引用的使用语法进行了阐明。
更新 章节,明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode 符号块等。
在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的内容,请看 。
在构造器中,常量属性有且仅能被赋值一次。更多内容,请看 。
多个可选绑定现在可以在if
语句后面以逗号分隔的赋值列表的方式出现,更多内容,请看 。
一个 必须出现在后缀表达式中。
在运行时可能会失败的类型转换可以使用 as?
和 as!
运算符,而确保不会失败的类型转换现在使用 as
运算符。更多内容,请看 。
新增 的完整指引。
在协议中新增了 的描述。
带有原始值的枚举类型增加了一个 rawValue
属性替代 toRaw()
方法,同时使用了一个以 rawValue
为参数的失败构造器来替代 fromRaw()
方法。更多的内容,请看 和 。
新增 的参考章节,它可以触发初始化失败。
自定义运算符现在可以包含 ?
字符,更新了 涉及改进后的规则的部分,并且在 章节中删除了重复的运算符有效字符集合。
在协议中新增了 章节。
新增 章节。
现在可以使用字符串内插语法,并删除了文档中有冲突的注释。
更新 章节来说明字符串和字符不能再用 +
号运算符或者复合加法运算符 +=
相互连接,这两种运算符现在只能用于字符串之间相连。请使用 String
类型的 append
方法在一个字符串的尾部增加单个字符。
在 章节增加了有关 availability
特性的一些内容。
若有值时,不再隐式的转换为 true
,同样,若无值时,也不再隐式的转换为 false
,这是为了避免在判别 optional Bool
的值时产生困惑。 替代的方案是,用==
或 !=
运算符显式地去判断 Optinal 是否是 nil
,以确认其是否包含值。
Swift 新增了一个 (a ?? b
) , 该表达式中,如果 Optional a
的值存在,则取得它并返回,若 Optional a
为 nil
,则返回默认值 b
更新和扩展 ,用以反映和展示'字符串和字符的比较',以及'前缀(prefix)/后缀(postfix)比较'都开始基于扩展字符集(extended grapheme clusters)规范的等价比较。
现在,你可以通过下标赋值或者 中的可变方法和操作符来给属性设值。相应地更新了有关 的内容,并扩展了 时检查方法调用成功的示例,以显示如何检查属性设置是否成功。
在可选链中新增了 章节。
更新 章节以标示,从该版本起,不能再通过 +=
运算符给一个数组新增一个新的项。对应的替代方案是,使 append
方法,或者通过 +=
运算符来新增一个只有一个项的数组。
新增一处说明,在 中,比如, a..b
和 a..<b
,起始值 a
不能大于结束值 b
。
重写 篇章:删除了本章中有关构造器重写的介绍性报道;转而将更多的注意力放到新增的部分——子类的新功能,以及如何通过重写(overrides)修改已有的功能。另外, 中的例子已经被替换为展示如何重写一个 description
属性。 (而有关如何在子类的构造器中修改继承属性的默认值的例子,已经被移到 篇章。)
更新 章节以标示: 重写一个特定的构造器必须使用 override
修饰符。
更新 章节以标示:required
修饰符现在需要出现在所有子类的 required 构造器的声明中,而 required 构造器的实现,现在可以仅从父类自动继承。
中置(Infix)的 不再需要 @infix
属性。
的 @prefix
和 @postfix
属性,已变更为 prefix
和 postfix
声明修饰符。
新增一处说明,在 Prefix 和 postfix 运算符被作用于同一个操作数时 的执行顺序。
的运算符函数不再使用 @assignment
属性来定义函数。
在定义 时,修饰符(Modifiers)的出现顺序发生变化
。比如现在,你该编写 prefix operator
, 而不是 operator prefix
。
在 章节新增了有关 dynamic
声明修饰符的内容。
新增有关 类型推导内容的内容。
新增 篇章。
更新 章节,在 Swift 中现在 Character
类型代表的是扩展字符集(extended grapheme cluster)中的一个 Unicode,为此,新增了 章节。同时, 和 章节新增了更多内容。
更新 章节,在一个字符串中,Unicode 标量(Unicode scalars)以 \u{n}
的形式来表示,n
是一个最大可以有8位的16进制数。
Swift 的内建 String
类型不再拥有 uppercaseString
和 lowercaseString
属性。在 章节中删除了对应部分,并更新了各种对应的代码用例。
新增 章节。
新增 章节。
新增 章节。
更新 章节,多个相关变量可以用"类型注解”在同一行中声明为同一类型。
@optional
, @lazy
, @final
, @required
等关键字被更新为 optional
, lazy
, final
, required
参见 。
更新了整本书中有关 ..<
的引用,从半闭区间改为了 。
更新 章节, Dictionary
现在增加了一个 Boolean 型的属性:isEmpty
。
解释了哪些字符(集)可被用来定义 。
nil
和布尔运算中的 true
和 false
现在被定义为 。
Swift 中的数组 (Array
) 类型从现在起具备了完整的值语义。具体内容被更新到 和 两小节,以反映这个新的变化。 此外,还解释了如何给 Strings, Arrays 和 Dictionaries 进行赋值和拷贝。
从 SomeType []
更新为 [SomeType]
。
新增 章节,现在书写格式为: [KeyType: ValueType]
。
新增 章节。
示例中使用新的全局函数 sorted
取代原先的全局函数 sort
去展示如何返回一个全新的数组。
更新 章节,即使结构体的成员 没有默认值
,逐一成员构造器也可以自动获得。
中..
更新为 ..<
。
新增 的示例。