这里的教程为Swift官方教程中文版。

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 进行适配更新。

本页内容包括:

Swift 3.0.1 更新

发布日期 语法变更记录
2016-10-27
  • 更新至 Swift 3.0.1。
  • 更新自动引用计数章节中关于 weak 和 unowned 引用的讨论。
  • 增加声明标识符章节中关于新的标识符`unowned`,`unowend(safe)`和`unowned(unsafe)`的描述。
  • 增加Any 和 AnyObject 的类型转换一节中关于使用类型`Any`作为可选值的描述。
  • 更新表达式章节,把括号表达式和元组表达式的描述分开。

Swift 3.0 更新

发布日期 语法变更记录
2016-09-13
  • 更新至 Swift 3.0。
  • 更新函数章节中关于函数的讨论,在函数定义一节中,标明所有函数参数默认都有函数标签。
  • 更新高级操作符章节中关于操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。
  • 增加访问控制章节中关于对新的访问级别描述符openfileprivate的信息
  • 更新函数定义一节中关于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 2.2 更新

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

Swift 2.1 更新

发布日期 语法变更记录
2015-10-20

Swift 2.0 更新

发布日期 语法变更记录
2015-09-16
  • 更新至 Swift 2.0。
  • 增加了对于错误处理相关内容,包括 错误处理一章、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)形式。
  • 更新了声明特性一节中关于@avaliablewarn_unused_result特性的相关内容。
  • 更新了类型特性一节中关于@convention特性的相关信息。
  • 增加了可选绑定一节中关于使用where子句进行多可选绑定的内容。
  • 增加了字符串字面量一节中关于在编译时使用 + 运算符凭借字符串字面量的相关信息。
  • 增加了元类型一节中关于元类型值的比较和使用它们通过构造器表达式构造实例。
  • 增加了断言调试一节中关于用户定义断言是被警用的相关内容。
  • 更新了声明特性一节中,对@NSManaged特性的讨论,现在这个特性可以被应用到一个确定实例方法。
  • 更新了可变参数一节,现在可变参数可以声明在函数参数列表的任意位置中。
  • 增加了重写可失败构造器一节中,关于非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。
  • 增加了任意类型用例的枚举一节中关于枚举用例作为函数的内容。
  • 增加了构造器表达式一节中关于显式引用一个构造器的内容。
  • 更新了编译控制语句一节中关于编译信息以及行控制语句的相关信息。
  • 更新了元类型一节中关于如何从元类型值中构造类实例。
  • 更新了弱引用一节中关于弱引用作为缓存的显存的不足。
  • 更新了类型特性一节,提到了存储型特性其实是懒加载。
  • 更新了捕获类型一节,阐明了变量和常量在闭包中如何被捕获。
  • 更新了声明特性一节用以描述如何在类中使用@objc关键字。
  • 增加了错误处理一节中关于执行throw语句的性能的讨论。增加了 Do 语句一节中相似的信息。
  • 更新了类型特性一节中关于类、结构体和枚举的存储型和计算型特性的信息。
  • 更新了Break 语句一节中关于带标签的 break 语句。
  • 更新了属性观察器一节,阐明了willSetdidSet观察器的行为。
  • 增加了访问级一节中关于private作用域访问的相关信息。
  • 增加了弱引用一节中关于若应用在垃圾回收系统和 ARC 之间的区别。
  • 更新了字符串字面量中特殊字符一节中对 Unicode 标量更精确的定义。

Swift 1.2 更新

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

Swift 1.1 更新

发布日期 语法变更记录
2014-10-16

Swift 1.0 更新

发布日期 语法变更记录
2014-08-18
◀ Swift 初见 Swift 1.0 发布内容 ▶