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 语句写在一个声明的最后。
  • 更新逃逸闭包一节,现在闭包默认为非逃逸的(noescaping)。
  • 更新基础部分一章中可选绑定部分和语句一章中While 语句部分,现在 if,whileguard 语句使用逗号分隔条件列表,不需要使用 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
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 添加了更多的信息。
  • 加入新的章节[权限控制(../chapter2/25AccessControl.md)。
  • 更新了字符串和字符章节用以表明,在 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 去展示如何返回一个全新的数组。
  • 更新关于结构体逐一成员构造器的描述:即使结构体的成员 没有默认值,逐一成员构造器也可以自动获得。
  • 半开区间运算符.. 改为 ..<
  • 添加一个泛型拓展的示例。