Swift 文档修订历史
1.0
翻译:成都老码团队翻译组-Arya 校对:成都老码团队翻译组-Oberyn changkun
1.1
翻译:成都老码团队翻译组-Arya 校对:成都老码团队翻译组-Oberyn changkun
1.2
翻译:成都老码团队翻译组-Arya 校对:成都老码团队翻译组-Oberyn changkun
2.0
翻译+校对:changkun
2.1
翻译+校对:changkun
2.2
翻译+校对:changkun
3.0
翻译+校对:shanks,2016-10-06
3.0.1
翻译+校对:shanks,2016-11-10
本页面根据 Document Revision History 进行适配更新。
自动引用计数章节中关于 weak 和 unowned 引用的讨论。
增加声明标识符章节中关于新的标识符`unowned`,`unowend(safe)`和`unowned(unsafe)`的描述。
增加Any 和 AnyObject 的类型转换一节中关于使用类型`Any`作为可选值的描述。
更新表达式章节,把括号表达式和元组表达式的描述分开。
函数章节中关于函数的讨论,在函数定义一节中,标明所有函数参数默认都有函数标签。
更新高级操作符章节中关于操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。
增加访问控制章节中关于对新的访问级别描述符open
和fileprivate
的信息
更新函数定义一节中关于inout
的讨论,标明它放在参数类型的前面,替代之前放在参数名称前面的方式。
更新逃逸闭包和自动闭包还有属性章节中关于@noescape
和@autoclosure
的讨论,现在他们是类型属性,而不是定义属性。
增加高级操作符章节中自定义中缀操作符的优先级一节和定义章节中优先级组声明一节中关于操作符优先级组的信息。
更新一些讨论:使用 macOS 替换掉 OS X, Error 替换掉 ErrorProtocol,和更新一些协议名称,比如使用 ExpressibleByStringLiteral 替换掉 StringLiteralConvertible。
更新泛型章节中泛型 Where 语句一节和泛型形参和实参章节,现在泛型的 where 语句写在一个声明的最后。
更新逃逸闭包一节,现在闭包默认为非逃逸的(noescaping)。
更新基础部分章节中可选绑定一节和语句章节中While 语句一节,现在 if,while 和 guard 语句使用逗号分隔条件列表,不需要使用 where 语句。
增加控制流章节中Switch一节和语句章节中Switch 语句一节关于 switch cases 可以使用多模式的信息。
更新函数类型一节,现在函数参数标签不包含在函数类型中。
更新协议章节中协议组合一节和类型章节中协议组合类型一节关于使用新的 Protocol1 & Protocol2 语法的信息。
更新动态类型表达式一节使用新的 type(of:) 表达式的信息。
更新行控制表达式一节使用 #sourceLocation(file:line:) 表达式的信息。
更新永不返回函数一节使用 新的 Never 类型的信息。
增加字面量表达式一节关于 playground 字面量的信息。
更新In-Out 参数一节,标明只有非逃逸闭包能捕获 in-out 参数。
更新默认参数值一节,现在默认参数不能在调用时候重新排序。
更新属性章节中关于属性参数使用分号的说明。
增加重新抛出函数和方法一节中关于在 catch 代码块中抛出错误的重新抛出函数的信息。
增加Selector 表达式一节中关于访问 Objective-C 中 Selector 的 getter 和 setter 的信息。
增加类型别名声明一节,标明函数类型作为参数类型必须使用括号包裹。
增加函数类型一节中关于泛型类型别名和在协议内使用类型别名的信息。
更新属性章节,标明 @IBAction,@IBOutlet 和 @NSManaged 隐式含有 @objc 属性。
增加声明属性一节中关于 @GKInspectable 的信息。
更新可选协议要求一节中关于只能在与 Objective-C 交互的代码中才能使用可选协议要求的信息。
删除函数声明一节中关于显式使用 let 关键字作为函数参数的信息。
删除语句一节中关于 Boolean 协议的信息, 现在这个协议已经被 Swift 标准库删除。
更正声明一节中关于 @NSApplicationMain 协议的信息。
编译配置语句一节中关于如何根据 Swift 版本进行条件编译。
增加了显示成员表达式一节中关于如何区分只有参数名不同的方法和构造器的信息。
增加了选择器表达式一节中针对 Objective-C 选择器的 #selector
语法。
更新了关联类型和协议关联类型声明,使用 associatedtype
关键词修改了对于关联类型的讨论。
更新了可失败构造器一节中关于当构造器在实例完全初始化之前返回 nil
的相关信息。
增加了比较运算符一节中关于比较元组的信息。
增加了关键字和标点符号一节中关于使用关键字作为外部参数名的信息。
增加了声明特性一节中关于@objc
特性的讨论,并指出枚举(Enumeration)和枚举用例(Enumaration Case)。
增加了操作符一节中对于自定义运算符的讨论包含了.
。
增加了重新抛出错误的函数和方法一节中关于重新抛出错误函数不能直接抛出错误的笔记。
增加了属性观察器一节中关于当作为 in-out 参数传递属性时,属性观察器的调用行为。
增加了Swift 初见一节中关于错误处理的内容。
更新了弱引用一节中的图片用以更清楚的展示重新分配过程。
删除了 C 语言风格的 for
循环,++
前缀和后缀运算符,以及--
前缀和后缀运算符。
删除了对变量函数参数和柯里化函数的特殊语法的讨论。
字符串插值(String Interprolation)和字符串字面量(String Literals)小节,现在字符串插值可包含字符串字面量。
增加了在非逃逸闭包(Nonescaping Closures)一节中关于 @noescape
属性的相关内容。
更新了声明特性(Declaration Attributes)和编译配置语句(Build Configuration Statement)小节中与 tvOS 相关的信息。
增加了 In-Out 参数(In-Out Parameters)小节中与 in-out 参数行为相关的信息。
增加了在捕获列表(Capture Lists)一节中关于指定闭包捕获列表被捕获时捕获值的相关内容。
更新了通过可选链式调用访问属性(Accessing Properties Through Optional Chaining)一节,阐明了如何通过可选链式调用进行赋值。
改进了自闭包(Autoclosure)一节中对自闭包的讨论。
在Swift 初见(A Swift Tour)一节中更新了一个使用??
操作符的例子。
错误处理一章、Do 语句、Throw 语句、Defer 语句以及try 运算符 的多个小节。
更新了表示并抛出错误一节,现在所有类型均可遵循 ErrorType
协议。
增加了将错误转换成可选值一节 try?
关键字的相关信息。
增加了枚举一章的递归枚举一节和声明一章的任意类型用例的枚举一节中关于递归枚举的内容。
增加了控制流一章中a
href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html#//apple_ref/doc/uid/TP40014097-CH9-ID523">检查
API 可用性一节和语句一章中可用性条件一节中关于 API 可用性检查的内容。
增加了控制流一章的早期退出一节和语句一章的guard语句中关于新 guard
语句的内容。
增加了协议一章中协议扩展一节中关于协议扩展的内容。
增加了访问控制一章中单元测试 target 的访问级别一节中关于单元测试的访问控制相关的内容。
增加了模式一章中可选模式一节中的新可选模式。
更新了 Repeat-While 一节中关于repeat-while
循环的信息。
更新了字符串和字符一章,现在String
在 Swift 标准库中不再遵循CollectionType
协议。
增加了打印常量和变量一节中关于新 Swift 标准库中关于 print(_:separator:terminator)
的信息。
增加了枚举一章中原始值的隐式赋值一节和声明一章的包含原始值类型的枚举一节中关于包含String
原始值的枚举用例的行为。
增加了自闭包一节中关于@autoclosure
特性的相关信息,包括它的@autoclosure(escaping)
形式。
更新了声明特性一节中关于@avaliable
和warn_unused_result
特性的相关内容。
更新了类型特性一节中关于@convention
特性的相关信息。
增加了可选绑定一节中关于使用where
子句进行多可选绑定的内容。
增加了字符串字面量一节中关于在编译时使用 +
运算符凭借字符串字面量的相关信息。
增加了元类型一节中关于元类型值的比较和使用它们通过构造器表达式构造实例。
增加了断言调试一节中关于用户定义断言是被警用的相关内容。
更新了声明特性一节中,对@NSManaged
特性的讨论,现在这个特性可以被应用到一个确定实例方法。
更新了可变参数一节,现在可变参数可以声明在函数参数列表的任意位置中。
增加了重写可失败构造器一节中,关于非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。
增加了任意类型用例的枚举一节中关于枚举用例作为函数的内容。
增加了构造器表达式一节中关于显式引用一个构造器的内容。
更新了编译控制语句一节中关于编译信息以及行控制语句的相关信息。
更新了元类型一节中关于如何从元类型值中构造类实例。
更新了弱引用一节中关于弱引用作为缓存的显存的不足。
更新了类型特性一节,提到了存储型特性其实是懒加载。
更新了捕获类型一节,阐明了变量和常量在闭包中如何被捕获。
更新了声明特性一节用以描述如何在类中使用@objc
关键字。
增加了错误处理一节中关于执行throw
语句的性能的讨论。增加了 Do 语句一节中相似的信息。
更新了类型特性一节中关于类、结构体和枚举的存储型和计算型特性的信息。
更新了Break 语句一节中关于带标签的 break 语句。
更新了属性观察器一节,阐明了willSet
和didSet
观察器的行为。
增加了访问级一节中关于private
作用域访问的相关信息。
增加了弱引用一节中关于若应用在垃圾回收系统和 ARC 之间的区别。
更新了字符串字面量中特殊字符一节中对 unicode 标量更精确的定义。
集合
@autoclosure
现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性@noescape
。更多信息,请看属性声明
对于类型属性和方法现在可以使用static
关键字作为声明描述符,更多信息,请看类型变量属性
Swift现在包含一个as?
和as!
的向下可失败类型转换运算符。更多信息,请看协议遵循性检查
增加了一个新的指导章节,它是关于字符串索引的
从溢出运算符中移除了溢出除运算符(&/)和求余溢出运算符(&%)。
更新了常量和常量属性在声明和构造时的规则,更多信息,请看常量声明
更新了字符串字面量中Unicode标量集的定义,请看字符串字面量中的特殊字符
更新了区间运算符章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。
更新了闭包引用类型章节来澄清对于变量的捕获规则
更新了值溢出章节来澄清有符号整数和无符号整数的溢出行为
更新了协议声明章节来澄清协议声明时的作用域和成员
更新了捕获列表章节来澄清对于闭包捕获列表中的弱引用和无主引用的使用语法。
更新了运算符章节来明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode符号块等
在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看常量声明
在构造器中,常量属性有且仅能被赋值一次。更多信息,请看在构造过程中给常量属性赋值
多个可选绑定现在可以在if
语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看可选绑定
一个失败构造器(Failable Initializers)的完整章节。
增加了协议中关于失败构造器要求的描述。
常量和变量的 Any
类型现可以包含函数实例。更新了关于 Any
相关的示例来展示如何在 switch
语句中如何检查并转换到一个函数类型。
带有原始值的枚举类型增加了一个rawValue
属性替代toRaw()
方法,同时使用了一个以rawValue
为参数的失败构造器来替代fromRaw()
方法。更多的信息,请看原始值(Raw Values)和带原始值的枚举类型(Enumerations with Cases of a Raw-Value Type)部分。
自定义运算符现在可以包含`?`字符,更新的运算符(Operators)章节描述了改进后的规则,并且从自定义运算符(Custom Operators)章节删除了重复的运算符有效字符集合
对构造器的规定(Initializer Requirements)
在章节协议中,增加新的小节:类专属协议(class-only protocols)
断言(assertions)现在可以使用字符串内插语法,并删除了文档中有冲突的注释
更新了连接字符串和字符(Concatenating Strings and Characters)小节来说明一个事实,那就是字符串和字符不能再用+
号运算符或者复合加法运算符+=
相互连接,这两种运算符现在只能用于字符串之间相连。请使用String
类型的append
方法在一个字符串的尾部增加单个字符
在声明特性(Declaration Attributes)章节增加了关于availability
特性的一些信息
可选类型(Optionals) 若有值时,不再隐式的转换为 true
,同样,若无值时,也不再隐式的转换为 false
, 这是为了避免在判别 optional Bool
的值时产生困惑。 替代的方案是,用==
或 !=
运算符显式地去判断Optinal是否是 nil
,以确认其是否包含值。
Swift新增了一个 Nil合并运算符(Nil Coalescing Operator) (a ?? b
), 该表达式中,如果Optional a
的值存在,则取得它并返回,若Optional a
为nil
,则返回默认值 b
更新和扩展 字符串的比较(Comparing Strings) 章节,用以反映和展示'字符串和字符的比较',以及'前缀(prefix)/后缀(postfix)比较'都开始基于扩展字符集(extended grapheme clusters)规范的等价比较.
现在,你可以通过 可选链(Optional Chaining)来:给属性设值,将其赋给一个下标脚注(subscript); 或调用一个变异(mutating)方法或运算符。对此,章节——通过可选链访问属性(Accessing Properties Through Optional Chaining)的内容已经被相应的更新。而章节——通过可选链调用方法(Calling Methods Through Optional Chaining中,关于检查方法调用是否成功的例子,已被扩展为展示如何检查一个属性是否被设值成功。
在章节可选链中,增加一个新的小节 访问可选类型的下标脚注(Accessing Subscripts of Optional Type)
更新章节 访问和修改数组(Accessing and Modifying an Array) 以标示:从该版本起,不能再通过+=
运算符给一个数组添加一个新的项。. 对应的替代方案是, 使append
方法, 或者通过+=
运算符来添加一个只有一个项的数组(single-item Array).
添加了一个提示:在 范围运算符(Range Operators)中,比如, a...b
和 a..<b
,起始值a
不能大于结束值b
.
重写了继承(Inheritance) 这一章:删除了本章中关于构造器重写的介绍性报道;转而将更多的注意力放到新增的部分——子类的新功能,以及如何通过重写(overrides)修改已有的功能。另外,小节 重写属性的Getters和Setters(Overriding Property Getters and Setters) 中的例子已经被替换为展示如何重写一个 description
属性. (而关于如何在子类的构造器中修改继承属性的默认值的例子,已经被移到 构造过程(Initialization) 这一章.)
更新了 构造器的继承与重写(Initializer Inheritance and Overriding) 小节以标示: 重写一个特定的构造器必须使用 override
修饰符.
更新 Required构造器(Required Initializers) 小节以标示:required
修饰符现在需要出现在所有子类的required构造器的声明中, 而required构造器的实现,现在可以仅从父类自动继承。
中置(Infix)的 运算符函数(Operator Functions) 不再需要@infix
属性.
前置和后置运算符(Prefix and Postfix Operators)的@prefix
和 @postfix
属性,已变更为 prefix
和 postfix
声明修饰符(declaration modifiers).
增加一条注解:当Prefix和postfix运算符被作用于同一个操作数时,关于前置和后置运算符(Prefix and Postfix Operators)的顺序(postfix运算符会先被执行)
在运算符函数(Operator functions)中, 组合赋值运算符(Compound Assignment Operators) 不再使用 @assignment
属性来定义函数.
在这个版本中,在定义自定义操作符(Custom Operators) 时,修饰符(Modifiers)的出现顺序发生变化。比如, 现在,你该编写 prefix operator
, 而不是 operator prefix
.
增加信息:关于dynamic
声明修饰符(declaration modifier),于章节 声明修饰符(Declaration Modifiers).
增加信息:字面量Literals 的类型推导(type inference)
为章节Curried Functions添加了更多的信息.
加入新的章节 权限控制(Access Control).
更新了章节 字符串和字符(Strings and Characters) 用以表明,在Swift中,Character
类型现在代表的是扩展字符集(extended grapheme cluster)中的一个Unicode,为此,新增了小节 Extended Grapheme Clusters 。同时,为小节 Unicode标量(Unicode Scalars) 和 字符串比较(Comparing Strings)增加了更多内容.
更新章节字符串字面量(String Literals):在一个字符串中,Unicode标量(Unicode scalars) 以 \u{n}
的形式来表示, n
是一个最大可以有8位的16进制数(hexadecimal digits)
NSString
length
属性已被映射到Swift的内建 String
类型。(注意,这两属性的类型是utf16Count
,而非 utf16count
).
Swift的内建 String
类型不再拥有 uppercaseString
和 lowercaseString
属性.其对应部分在章节 字符串和字符(Strings and Characters)已经被删除, 并且各种对应的代码用例也已被更新.
加入新的章节 没有外部名的构造器参数(Initializer Parameters Without External Names).
加入新的章节 Required构造器(Required Initializers).
加入新的章节 可选元祖(函数)返回类型 (Optional Tuple Return Types).
更新章节 类型标注(Type Annotations) :多个相关变量可以用“类型标注”(type annotaion)在同一行中声明为同一类型。
@optional
, @lazy
, @final
, @required
等关键字被更新为 optional
, lazy
, final
, required
参见声明修饰符(Declaration Modifiers).
更新整本书 —— 引用 ..<
作为区间运算符(Half-Open Range Operator) (取代原先的..
).
更新了小节 读取和修改字典(Accessing and Modifying a Dictionary): Dictionary
现在早呢更加了一个 Boolean型的属性: isEmpty
解释了哪些字符(集)可被用来定义自定义操作符 (Custom Operators)
nil
和布尔运算中的 true
和 false
现在被定义为字面量Literals.
Swift 中的数组 (Array
) 类型从现在起具备了完整的值语义。具体信息被更新到 集合的可变性(Mutability of Collections) 和 数组(Arrays) 两小节,以反映这个新的变化. 此外,还解释了如何 给Strings, Arrays和Dictionaries进行赋值和拷贝 (Assignment and Copy Behavior for Strings, Arrays, and Dictionaries).
数组类型速记语法(Array Type Shorthand Syntax) 从 SomeType[]
.更新为[SomeType]
加入新的小节:字典类型的速记语法(Dictionary Type Shorthand Syntax).: [KeyType: ValueType]
.
加入新的小节:字典键类型的哈希值(Hash Values for Dictionary Key Types).
例子 闭包表达式 (Closure Expressions) 中使用新的全局函数 sorted
取代原先的全局函数 sort
去展示如何返回一个全新的数组.
更新关于 结构体逐一成员构造器 (Memberwise Initializers for Structure Types) 的描述:即使结构体的成员没有默认值,逐一成员构造器也可以自动获得。
区间运算符(Half-Open Range Operator)由..
更新到..<
添加一个例子 扩展一个泛型(Extending a Generic Type)