触控科技
The Swift Programming
Language 中文版
(CocoaChina 精校)
CocoaChina
2014-6-12
The Swift Programming Language 中文 CocoaChina 精校版
2
目录
1. 欢迎使⽤Swift .............................................................................................................. 8
1.1.关于 Swift ............................................................................................................ 8
1.2. Swift 初见............................................................................................................ 9
简单值 ............................................................................................................... 9
控制流 ............................................................................................................. 11
函数和闭包 ...................................................................................................... 14
对象和类.......................................................................................................... 16
枚举和结构体................................................................................................... 20
接口和扩展 ...................................................................................................... 23
泛型................................................................................................................. 25
2. Swift 教程 .................................................................................................................. 26
2.1 基础部分 ........................................................................................................... 26
常量和变量 ...................................................................................................... 27
注释................................................................................................................. 30
分号................................................................................................................. 31
整数................................................................................................................. 31
浮点数 ............................................................................................................. 32
类型安全和类型推测 ........................................................................................ 32
数值型字面量................................................................................................... 33
数值型类型转换 ............................................................................................... 35
类型别名.......................................................................................................... 36
布尔值 ............................................................................................................. 37
元组................................................................................................................. 38
可选................................................................................................................. 40
断言................................................................................................................. 44
2.2. 基本运算符 ...................................................................................................... 45
术语................................................................................................................. 46
赋值运算符 ...................................................................................................... 47
数值运算.......................................................................................................... 47
复合赋值.......................................................................................................... 51
比较运算.......................................................................................................... 51
三目条件运算................................................................................................... 52
区间运算符 ...................................................................................................... 53
逻辑运算.......................................................................................................... 54
2.3. 字符串和字符................................................................................................... 57
字符串字面量................................................................................................... 58
The Swift Programming Language 中文 CocoaChina 精校版
3
初始化空字符串 ............................................................................................... 59
字符串可变性................................................................................................... 59
字符串是值类型 ............................................................................................... 60
使用字符(Characters) ...................................................................................... 60
计算字符数量................................................................................................... 61
连接字符串和字符............................................................................................ 61
字符串插值 ...................................................................................................... 62
比较字符串 ...................................................................................................... 63
大写和小写字符串............................................................................................ 65
Unicode ........................................................................................................... 65
2.4. 集合类型.......................................................................................................... 68
数组................................................................................................................. 68
字典................................................................................................................. 74
集合的可变性................................................................................................... 79
2.5. 控制流 ............................................................................................................. 79
For 循环.......................................................................................................... 80
While 循环 ...................................................................................................... 84
条件语句.......................................................................................................... 88
控制转移语句................................................................................................... 97
2.6. 函数................................................................................................................103
定义和调用函数 ..............................................................................................104
函数的形参和返回值 .......................................................................................105
函数形参名 .....................................................................................................108
函数类型.........................................................................................................115
嵌套函数.........................................................................................................119
2.7. 闭包................................................................................................................119
闭包表达式 .....................................................................................................120
Trailing 闭包...................................................................................................124
捕获 (Caputure) .............................................................................................127
闭包是引用类型 ..............................................................................................129
2.8. 枚举................................................................................................................130
枚举语法(Enumeration Syntax) ..................................................................130
匹配枚举值和 Switch 语句...............................................................................132
关联值(Associated Values).........................................................................133
原始值(Raw Values)...................................................................................135
2.9. 类和结构体 .....................................................................................................137
类和结构体对比 ..............................................................................................138
结构体和枚举是值类型....................................................................................141
类是引用类型..................................................................................................143
类和结构体的选择...........................................................................................145
The Swift Programming Language 中文 CocoaChina 精校版
4
集合(Collection)类型的赋值和拷贝行为 ...........................................................146
2.10. 属性 ..............................................................................................................151
存储属性.........................................................................................................152
计算属性.........................................................................................................155
属性监视器 .....................................................................................................158
全局变量和局部变量 .......................................................................................160
类型属性.........................................................................................................160
2.11. ⽅法 ..............................................................................................................165
实例方法(Instance Methods)...........................................................................165
类型方法(Type Methods) ................................................................................171
2.12. 附属脚本 .......................................................................................................174
附属脚本语法..................................................................................................174
附属脚本用法..................................................................................................176
附属脚本选项..................................................................................................176
2.13. 继承 ..............................................................................................................178
定义一个基类(Base class)..........................................................................179
子类生成(Subclassing)...............................................................................180
重写(Overriding) ........................................................................................182
防止重写.........................................................................................................186
2.14. 构造过程 .......................................................................................................187
存储型属性的初始赋值....................................................................................187
定制化构造过程 ..............................................................................................189
默认构造器 .....................................................................................................192
值类型的构造器代理 .......................................................................................193
类的继承和构造过程 .......................................................................................196
通过闭包和函数来设置属性的默认值...............................................................207
2.15. 反初始化 .......................................................................................................209
反初始化.........................................................................................................209
反初始化原理..................................................................................................209
2.16. 自动引用计数 ................................................................................................212
ARC 如何工作 ................................................................................................213
ARC 实践 .......................................................................................................214
类实例间的强引用环 .......................................................................................215
解决实例间的强引用环....................................................................................218
解决闭包产生的强引用环 ................................................................................228
2.17. 自判断链接 ...................................................................................................230
自判断链接可替代强制拆包.............................................................................231
为自判断链接定义模型类 ................................................................................233
通过自判断链接调用属性 ................................................................................235