第1章 Swift介绍 1
1.1 基本语法 4
1.1.1 变量和常量 4
1.1.2 字符串插值 7
1.1.3 流程控制 8
1.2 基本数据类型 12
1.2.1 整型 12
1.2.2 Double和Float 14
1.2.3 布尔型 15
1.2.4 字符串 16
1.2.5 数组 17
1.2.6 字典 21
习题 22
第2章 深入学习Swift语法 23
2.1 可空类型 26
2.2 泛型 29
2.3 类型声明和类型推断 32
2.4 函数和闭包 33
2.4.1 全局函数 33
2.4.2 嵌套函数 34
2.4.3 闭包表达式 35
2.5 元组 36
2.6 switch语句和模式匹配 38
习题 41
第3章 对象和类 43
3.1 枚举 46
3.2 类 51
3.3 结构体 55
3.4 继承 57
3.5 重载 58
3.6 重写 60
3.7 初始化 61
3.8 属性 63
3.8.1 计算型属性 65
3.8.2 属性观察者 66
3.8.3 延迟属性 68
3.9 下标 69
3.10 协议 71
3.11 扩展 73
3.12 访问控制 74
习题 79
第4章 可空类型 81
4.1 可空类型和nil 84
4.2 有效性检查、可空绑定和强制拆箱 86
4.3 可空链 89
4.4 带隐式拆箱的可空 94
习题 96
第5章 泛型 99
5.1 为什么使用泛型 102
5.2 泛型函数 102
5.2.1 类型参数 103
5.2.2 使用多个类型参数 104
5.3 泛型类型 104
5.3.1 关联类型 108
5.3.2 where子句 110
习题 111
第6章 函数和闭包 113
6.1 函数 116
6.1.1 参数 116
6.1.2 外部参数名 117
6.1.3 参数的默认值 119
6.1.4 可变参数和inout参数 120
6.1.5 返回类型 121
6.2 闭包 123
6.2.1 参数及返回值的类型推断 124
6.2.2 尾随闭包 125
6.3 函数式编程 126
习题 129
第7章 使用Objective-C 131
7.1 与C和Objective-C APIs打交道 134
7.1.1 可空属性和返回值 135
7.1.2 AnyObject类型 137
7.1.3 继承、扩展和协议 138
7.1.4 自动转换类型 139
7.1.5 选择器和枚举 142
7.1.6 与C代码交互 143
7.2 在项目中同时使用Swift和Objective-C代码 144
习题 147
第8章 常见模式 149
8.1 嵌套类型 152
8.2 单例 153
8.3 使用GCD 154
8.3.1 dispatch_once 155
8.3.2 dispatch_async 155
8.3.3 dispatch_after 156
8.3.4 dispatch_apply 156
8.4 Sequences和Generators 157
8.5 运算符 161
8.5.1 运算符重载 162
8.5.2 自定义运算符 163
习题 164
索引 165