Files
the-swift-programming-langu…/source/chapter1/04_revision_history.md
2019-06-28 00:09:46 +08:00

36 KiB
Raw Blame History

Swift 文档修订历史

2019-01-24

  • 更新到 Swift 5。
  • 增加了 拓展字符串分隔符 部分,另外在 字符串字面量 部分更新了拓展字符串分隔符相关内容。
  • 添加了 动态调用 章节,其中包含有关使用 dynamicCallable 属性动态调用实例作为函数的信息。
  • 添加了 unknown未来枚举匹配 章节,其中包含了使用 unknown 来处理未来枚举可能发生改变的情形。
  • Key-Path 表达式章节添加了标示 key path (.self) 相关内容。
  • 可选编译块 章节新增了小于比较符 < 相关内容。

2018-09-17

  • 更新至 Swift 4.2。
  • 遍历枚举情形 章节添加了访问所有枚举情形的内容。
  • 编译诊断 章节添加了有关 #error#warning 相关内容。
  • 属性声明 章节中补充了 inlinableusableFromInline 属性相关的内联信息。
  • 属性声明 章节中添加了 requires_stored_property_initswarn_unqualified_access 属性相关的信息。
  • 可选编译块 章节新增了如何根据 Swift 编译器版本对代码进行对应编译处理的内容。
  • 字面量语法 章节补充了 #dsohandle 相关内容。

2018-03-29

2017-12-04

  • 更新至 Swift 4.0.3。
  • 更新 Key-Path 表达式章节,现在 key path 支持下标子路径。

2017-09-19

2017-03-27

  • 更新至 Swift 3.1。
  • 增加 范型 Where 子句扩展,其中包含需要的扩展信息。
  • 增加了一个区间迭代的例子到 For-In 循环
  • 增加一个可失败数值转换的例子 到可失败构造器 章节。
  • 增加关于使用 Swift 语言版本的 available 特性内容到 声明特性 章节。
  • 更新了 函数类型 章节中的描述,注意在写函数类型时不允许使用参数标签。
  • 更新了 条件编译块 章节中的 Swift 语言版本号的描述,现在可以使用可选的补丁版本号。
  • 更新了 函数类型 章节的描述,现在 Swift 区分了采用多参数的函数和采用元组类型的单个参数的函数。
  • 表达式 章节中删除了动态表达式的部分,现在 type(of:) 是 Swift 标准库函数。

2016-10-27

  • 更新至 Swift 3.0.1。
  • 更新 自动引用计数 章节中关于 weak 和 unowned 引用的讨论。
  • 增加 声明标识符 章节中关于新的标识符 unownedunowend(safe)unowned(unsafe) 的描述。
  • 增加 Any 和 AnyObject 的类型转换 一节中关于使用类型 Any 作为可选值的描述。
  • 更新 表达式 章节,把括号表达式和元组表达式的描述分开。

2016-09-13

  • 更新至 Swift 3.0。
  • 更新 函数 一章和 函数声明 部分关于函数的讨论,在一节中,标明所有函数参数默认都有函数标签。
  • 更新 高级操作符 章节中关于操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。
  • 增加 访问控制 章节中关于对新的访问级别描述符 openfileprivate 的信息。
  • 更新 函数声明 中关于 inout 的讨论,注意它现在出现在参数类型的前面,而不是在参数名称的前面。
  • 更新 逃逸闭包自动闭包 还有 属性 章节中关于 @noescape@autoclosure 的讨论,现在他们是类型属性,而不是定义属性。
  • 增加 高级操作符 一章中 自定义中缀操作符的优先级 部分和 定义 一章中 优先级组声明 部分中关于操作符优先级组的信息。
  • 更新一些讨论:使用 macOS 替换掉 OS X Error 替换掉 ErrorProtocol和更新一些协议名称比如使用 ExpressibleByStringLiteral 替换掉 StringLiteralConvertible。
  • 更新 泛型泛型形参和实参 章节中 泛型 Where 语句 部分,现在泛型的 where 语句写在一个声明的最后。
  • 更新 逃逸闭包 一节,现在闭包默认为非逃逸的。
  • 更新 基础部分 一章中 可选绑定 部分和 语句 一章中 While 语句 部分,现在 ifwhileguard 语句使用逗号分隔条件列表,不需要使用 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 协议的信息。

2016-03-21

  • 更新至 Swift 2.2。
  • 增加了 编译配置语句 一节中关于如何根据 Swift 版本进行条件编译。
  • 增加了 显示成员表达式 一节中关于如何区分只有参数名不同的方法和构造器的信息。
  • 增加了 选择器表达式 一节中针对 Objective-C 选择器的 #selector 语法。
  • 更新了 关联类型协议关联类型声明 中的关于使用 associatedtype 关键词修饰关联类型的讨论。
  • 更新了 可失败构造器 一节中关于当构造器在实例完全初始化之前返回 nil 的相关信息。
  • 增加了 比较运算符 一节中关于比较元组的信息。
  • 增加了 关键字和标点符号 一节中关于使用关键字作为外部参数名的信息。
  • 增加了 声明特性 一节中关于 @objc 特性的讨论,并指出枚举和枚举用例。
  • 增加了 操作符 一节中对于自定义运算符的讨论包含了 .
  • 增加了 重新抛出错误的函数和方法 一节中关于重新抛出错误函数不能直接抛出错误的笔记。
  • 增加了 属性观察器 一节中关于当作为 in-out 参数传递属性时,属性观察器的调用行为。
  • 增加了 Swift 初见 一节中关于错误处理的内容。
  • 更新了 弱引用 一节中的图片用以更清楚的展示重新分配过程。
  • 删除了 C 语言风格的 for 循环,++ 前缀和后缀运算符,以及 -- 前缀和后缀运算符。
  • 删除了对变量函数参数和柯里化函数的特殊语法的讨论。

2015-10-20

2015-09-16

  • 更新至 Swift 2.0。
  • 错误处理 一章中增加了关于错误处理的相关内容,包括 Do 语句Throw 语句Defer 语句 以及 try 运算符
  • 更新了 错误表示和抛出 一节,现在所有类型都可以遵循 ErrorType 协议了。
  • 将错误装换成可选值 一节增加了 try 关键字相关信息。
  • 枚举 一章的 递归枚举 部分以及以及 声明 一章的 任意类型用例的枚举 一节中新增了递归枚举相关信息。
  • 控制流 一章的 API 可用性检查 一节和 语句 一章的 可用性条件一节 中增加了关于 API 可用性检查相关的内容。
  • 控制流 一章的 尽早退出 一节和 语句 一章的 Guard 语句 部分新增了与 guard 语句相关的内容。
  • 协议 一章中 协议扩展 一节中新增了关于协议扩展的内容。
  • 访问控制 一章的 单元测试 target 的访问级别 一节中新增了关于单元测试访问控制相关的内容。
  • 模式 一章的 可选模式 一节中增加了可选模式相关内容。
  • 更新了 Repeat-While 一节中关于 repeat-while 循环相关的内容。
  • 更新了 字符串和字符 一章,现在 String 类型在 Swift 标准库中不再遵循 CollectionType 协议。
  • 常量与变量打印 一节中增加了新 Swift 标准库中关于 print(_:separator:terminator) 相关内容。
  • 枚举 一章中的 原始值的隐式赋值 一节和 声明 一章的 包含原始值类型的枚举 一节中增加了关于包含 String 原始值的枚举用例的行为相关内容。
  • 自动闭包 一节中增加了关于 @autoclosure 特性的相关信息,包括它的 @autoclosure(escaping) 形式。
  • 更新了 声明特性 一节中关于 @avaliablewarn_unused_result 特性的相关内容。
  • 更新了 类型特性 一节中关于 @convention 特性的相关信息。
  • 可选绑定 一节中增加了关于使用 where 子句进行多可选绑定的相关内容。
  • 字符串字面量 一节中新增了关于在编译时使用 + 运算符拼接字符串字面量的相关信息。
  • 元类型 一节中新增了关于元类型值的比较和使用它们通过构造器表达式构造实例相关内容。
  • 断言调试 一节中新增了关于用户定义断言何时会失效的注释内容。
  • 更新了 声明特性 一节中对 @NSManaged 特性的讨论,现在这个特性可以被应用到一个确定实例方法。
  • 更新了 可变参数 一节,现在可变参数可以声明在函数参数列表的任意位置中。
  • 重写可失败构造器 一节中新增了关于非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。
  • 任意类型用例的枚举 一节中增加了关于枚举用例作为函数的内容。
  • 构造器表达式 一节中新增关于显式引用一个构造器相关内容。
  • 编译控制语句 一节中新增了关于编译信息以及行控制语句相关信息。
  • 元类型 一节中新增了关于如何从元类型值中构造类实例相关内容。
  • 弱引用 一节中关于弱引用作为缓存所存在的不足的注释说明。
  • 更新了 类型特性 一节,提到了存储型特性其实是懒加载。
  • 更新了 捕获类型 一节,阐明了变量和常量在闭包中如何被捕获。
  • 更新了 声明特性 一节,用以描述何时在类中使用 @objc 关键字。
  • 错误处理 一节中增加了关于执行 throw 语句的性能的讨论。在 Do 语句 一节的 do 语句部分也增加了类似内容。
  • 更新了 类型特性 一节中关于类、结构体和枚举的存储型和计算型特性相关的内容。
  • 更新了 Break 语句 一节中关于带标签的 break 语句相关内容。
  • 属性观察器 一节中更新了一处注释,用来明确 willSetdidSet 观察器的行为。
  • 访问级别 一节中新增了关于 private 作用域的相关信息说明。
  • 弱引用 一节中增加了关于弱应用在垃圾回收系统和 ARC 之间的区别的说明。
  • 更新了 字符串字面量中特殊字符 一节中对 Unicode 标量更精确的定义。

2015-4-8

  • 更新至 Swift 1.2。
  • Swift 现在自身提供了一个 Set 集合类型,更多信息请看 Sets
  • @autoclosure 现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性 @noescape。更多信息,请看 属性声明
  • 对于类型属性和方法现在可以使用 static 关键字作为声明描述符,更多信息,请看 类型变量属性
  • Swift 现在包含一个 as?as! 的向下可失败类型转换运算符。更多信息,请看 协议遵循性检查
  • 增加了一个关于 字符串索引 的新指导章节。
  • 溢出运算符 一节中移除了溢出除运算符(&/)和求余溢出运算符(&%)。
  • 更新了常量和常量属性在声明和构造时的规则,更多信息,请看 常量声明
  • 更新了字符串字面量中 Unicode 标量集的定义,请看 字符串字面量中的特殊字符
  • 更新了 区间运算符 章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。
  • 更新了 闭包引用类型 章节来阐明对于变量的捕获规则。
  • 更新了 值溢出 章节堆有符号整数和无符号整数的溢出行为进行了阐明。
  • 更新了 协议声明 章节对协议声明时的作用域和成员等内容进行了阐明。
  • 更新了 捕获列表 章节对于闭包捕获列表中的弱引用和无主引用的使用语法进行了阐明。
  • 更新了 运算符 章节明确指明一些例子来说明自定义运算符所支持的特性如数学运算符各种符号Unicode 符号块等。
  • 在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看 常量声明
  • 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看 在构造过程中给常量属性赋值
  • 多个可选绑定现在可以在if语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看 可选绑定
  • 一个 可选链表达式 必须出现在后缀表达式中。
  • 协议类型转换不再局限于 @obj 修饰的协议了。
  • 在运行时可能会失败的类型转换可以使用 as?as! 运算符,而确保不会失败的类型转换现在使用 as 运算符。更多信息,请看 类型转换运算符

2014-10-16

  • 更新至 Swift 1.1。
  • 增加了关于 失败构造器 的完整章节。
  • 增加了协议中关于 失败构造器要求 的描述。
  • 常量和变量的 Any 类型现可以包含函数实例。更新了关于 Any 相关的示例来展示如何在 switch 语句中如何检查并转换到一个函数类型。
  • 带有原始值的枚举类型增加了一个 rawValue 属性替代 toRaw() 方法,同时使用了一个以 rawValue 为参数的失败构造器来替代 fromRaw() 方法。更多的信息,请看 原始值带原始值的枚举类型 部分。
  • 添加了一个关于 Failable Initializer 的新参考章节,它可以触发初始化失败。
  • 自定义运算符现在可以包含 ? 字符,更新 运算符 章节描述了改进后的规则,并且从 自定义运算符 章节删除了重复的运算符有效字符集合。

2014-08-18

  • 发布新的文档用以详述 Swift 1.0,苹果公司针对 iOS 和 OS X 应用的全新开发语言。
  • 在章节协议中,增加新的小节: 对构造器的规定
  • 在章节协议中,增加新的小节: 类专属协议
  • 断言 现在可以使用字符串内插语法,并删除了文档中有冲突的注释。
  • 更新了 连接字符串和字符 小节来说明一个事实,那就是字符串和字符不能再用 + 号运算符或者复合加法运算符 += 相互连接,这两种运算符现在只能用于字符串之间相连。请使用 String 类型的 append 方法在一个字符串的尾部增加单个字符。
  • 属性申明 章节增加了关于 availability 特性的一些信息。
  • 可选类型 若有值时,不再隐式的转换为 true,同样,若无值时,也不再隐式的转换为 false,这是为了避免在判别 optional Bool 的值时产生困惑。 替代的方案是,用==!= 运算符显式地去判断 Optinal 是否是 nil,以确认其是否包含值。
  • Swift 新增了一个 Nil 合并运算符 (a ?? b) , 该表达式中,如果 Optional a 的值存在,则取得它并返回,若 Optional anil,则返回默认值 b
  • 更新和扩展 字符串的比较 ,用以反映和展示'字符串和字符的比较',以及'前缀prefix/后缀postfix比较'都开始基于扩展字符集extended grapheme clusters规范的等价比较。
  • 现在,你可以通过下标赋值或者 可选调用链 中的可变方法和操作符来给属性设值。相应地更新了有关 通过可选链接访问属性 的信息,并扩展了 通过可选链接调用方法 时检查方法调用成功的示例,以显示如何检查属性设置是否成功。
  • 在章节可选链中,增加一个新的小节 访问可选类型的下标脚注
  • 更新章节 访问和修改数组 以标示:从该版本起,不能再通过 += 运算符给一个数组添加一个新的项。对应的替代方案是,使 append 方法,或者通过 += 运算符来添加一个只有一个项的数组。
  • 添加了一个提示:在 范围运算符 中,比如, a..ba..<b ,起始值 a 不能大于结束值 b
  • 重写了 继承 这一章删除了本章中关于构造器重写的介绍性报道转而将更多的注意力放到新增的部分——子类的新功能以及如何通过重写overrides修改已有的功能。另外 重写属性的 Getters 和 Setters 中的例子已经被替换为展示如何重写一个 description 属性。 (而关于如何在子类的构造器中修改继承属性的默认值的例子,已经被移到 构造过程 这一章。)
  • 更新了 构造器的继承与重写 小节以标示: 重写一个特定的构造器必须使用 override 修饰符。
  • 更新 Required 构造器 小节以标示:required 修饰符现在需要出现在所有子类的 required 构造器的声明中,而 required 构造器的实现,现在可以仅从父类自动继承。
  • 中置Infix运算符函数 不再需要 @infix 属性。
  • 前置和后置运算符@prefix@postfix 属性,已变更为 prefixpostfix 声明修饰符。
  • 增加一条注解:当 Prefix 和 postfix 运算符被作用于同一个操作数时,关于 前置和后置运算符 的执行顺序。
  • 在运算符函数中,组合赋值运算符 不再使用 @assignment 属性来定义函数。
  • 在这个版本中,在定义 自定义操作符 时,修饰符Modifiers的出现顺序发生变化。比如现在,你该编写 prefix operator 而不是 operator prefix
  • 声明修饰符 章节增加关于 dynamic 声明修饰符的信息。
  • 增加 字面量 的类型推导内容。
  • 为章节 Curried Functions 添加了更多的信息。
  • 加入新的章节 权限控制
  • 更新了 字符串和字符 章节用以表明,在 Swift 中,Character 类型现在代表的是扩展字符集extended grapheme cluster中的一个 Unicode为此新增了小节 Extended Grapheme Clusters。同时,为小节 Unicode 标量字符串比较 增加了更多内容。
  • 更新 字符串字面量 章节在一个字符串中Unicode 标量Unicode scalars\u{n}的形式来表示,n 是一个最大可以有8位的16进制数。
  • NSString length 属性已被映射到 Swift 的内建 String类型。(注意,这两属性的类型是utf16Count,而非 utf16count)。
  • Swift 的内建 String 类型不再拥有 uppercaseStringlowercaseString 属性。其对应部分在章节 字符串和字符 已经被删除,并且各种对应的代码用例也已被更新。
  • 加入新的章节 没有外部名的构造器参数
  • 加入新的章节 Required 构造器
  • 加入新的章节 可选元组返回类型
  • 更新了 类型注解 章节:多个相关变量可以用"类型注解”在同一行中声明为同一类型。
  • @optional, @lazy, @final, @required 等关键字被更新为 optional, lazy, final, required 参见 声明修饰符
  • 更新整本书中关于 ..< 的引用,从半闭区间改为了 半开区间
  • 更新了小节 读取和修改字典 Dictionary 现在增加了一个 Boolean 型的属性:isEmpty
  • 解释了哪些字符(集)可被用来定义 自定义操作符
  • nil 和布尔运算中的 truefalse 现在被定义为 字面量
  • Swift 中的数组 Array 类型从现在起具备了完整的值语义。具体信息被更新到 集合的可变性数组 两小节,以反映这个新的变化。 此外,还解释了如何给 Strings, Arrays 和 Dictionaries 进行赋值和拷贝。
  • 数组类型速记语法SomeType [] 更新为 [SomeType]
  • 新增关于 字典类型的速记语法 的内容,现在书写格式为: [KeyType: ValueType]
  • 加入新的小节: 字典键类型的哈希值
  • 闭包表达式 示例中使用新的全局函数 sorted 取代原先的全局函数 sort 去展示如何返回一个全新的数组。
  • 更新关于 结构体逐一成员构造器 的描述:即使结构体的成员 没有默认值,逐一成员构造器也可以自动获得。
  • 半开区间运算符.. 改为 ..<
  • 添加一个 泛型拓展 的示例。