第一部分 基础篇 2
第1章 准备开始 2
1.1 本书学习路线图 2
1.2 本书中的约定 3
1.2.1 示例代码约定 4
1.2.2 图示的约定 4
1.3 Xcode开发工具 6
1.3.1 Xcode安装和卸载 7
1.3.2 Xcode界面 10
1.4 如何使用API帮助 11
1.5 本章小结 14
1.6 同步练习 14
第2章 第一个Swift程序 15
2.1 使用Playground编写 15
2.1.1 编程利器Playground 15
2.1.2 编写HelloWorld程序 16
2.2 代码解释 19
2.3 本章小结 20
2.4 同步练习 20
第3章 Swift基本语法 21
3.1 标识符和关键字 21
3.1.1 标识符 21
3.1.2 关键字 22
3.2 常量和变量 22
3.2.1 常量 22
3.2.2 变量 23
3.2.3 命名规范 23
3.3 注释 24
3.4 表达式 25
3.5 本章小结 26
3.6 同步练习 26
第4章 基本运算符 28
4.1 算术运算符 28
4.1.1 一元运算符 28
4.1.2 二元运算符 29
4.1.3 算术赋值运算符 30
4.2 关系运算符 31
4.3 逻辑运算符 33
4.4 位运算符 34
4.5 其他运算符 36
4.6 本章小结 37
4.7 同步练习 37
第5章 基本数据类型 39
5.1 Swift数据类型 39
5.2 整型 39
5.3 浮点型 41
5.4 数字表示方式 41
5.4.1 进制数字表示 41
5.4.2 指数表示 42
5.4.3 其他表示 42
5.5 数字类型之间的转换 42
5.5.1 整型之间的转换 42
5.5.2 整型与浮点型之间的转换 43
5.6 布尔型 44
5.7 元组类型 44
5.8 本章小结 45
5.9 同步练习 45
第6章 字符和字符串 47
6.1 字符 47
6.1.1 Unicode编码 47
6.1.2 转义符 48
6.2 创建字符串 49
6.3 字符串可变性 49
6.4 字符串比较 50
6.4.1 大小和相等比较 50
6.4.2 前缀和后缀比较 51
6.5 本章小结 52
6.6 同步练习 52
第7章 控制语句 54
7.1 分支语句 54
7.1.1 条件语句if 54
7.1.2 多分支语句switch 56
7.1.3 在switch中使用范围匹配 58
7.1.4 在switch中比较元组类型 59
7.2 循环语句 61
7.2.1 while语句 61
7.2.2 do while语句 63
7.2.3 for语句 63
7.2.4 for in语句 64
7.3 跳转语句 65
7.3.1 break语句 66
7.3.2 continue语句 67
7.3.3 fallthrough语句 69
7.4 本章小结 71
7.5 同步练习 71
第8章 集合 75
8.1 数组集合 75
8.1.1 数组声明与初始化 76
8.1.2 数组的修改 77
8.1.3 数组遍历 78
8.2 字典集合 78
8.2.1 字典声明与初始化 79
8.2.2 字典的修改 80
8.2.3 字典遍历 81
8.3 集合的复制 82
8.3.1 字典复制 82
8.3.2 数组复制 84
8.4 本章小结 86
8.5 同步练习 86
第9章 函数 88
9.1 使用函数 88
9.2 传递参数 89
9.2.1 使用外部参数名 89
9.2.2 参数默认值 90
9.2.3 可变参数 90
9.2.4 参数的传递引用 91
9.3 函数返回值 92
9.3.1 无返回值函数 92
9.3.2 多返回值函数 93
9.4 函数类型 93
9.4.1 作为函数返回类型使用 94
9.4.2 作为参数类型使用 95
9.5 函数重载 96
9.6 嵌套函数 97
9.7 泛型和泛型函数 98
9.7.1 一个问题的思考 99
9.7.2 泛型函数 99
9.8 本章小结 100
9.9 同步练习 100
第10章 闭包 104
10.1 回顾嵌套函数 104
10.2 闭包的概念 105
10.3 使用闭包表达式 106
10.3.1 类型推断简化 106
10.3.2 隐藏return关键字 107
10.3.3 缩写参数名称 107
10.3.4 使用闭包返回值 108
10.4 使用尾随闭包 108
10.5 捕获上下文中的变量和常量 109
10.6 本章小结 110
10.7 同步练习 110
第二部分 面向对象篇 114
第11章 Swift语言中的面向对象特性 114
11.1 面向对象概念和基本特征 114
11.2 Swift中的面向对象类型 114
11.3 枚举 115
11.3.1 成员值 115
11.3.2 原始值 117
11.3.3 相关值 118
11.4 结构体与类 120
11.4.1 类和结构体定义 120
11.4.2 再谈值类型和引用类型 121
11.4.3 引用类型的比较 123
11.5 类型嵌套 124
11.6 可选类型与可选链 125
11.6.1 可选类型 125
11.6.2 可选链 126
11.7 本章小结 129
11.8 同步练习 130
第12章 属性与下标 134
12.1 存储属性 134
12.1.1 存储属性概念 134
12.1.2 延迟存储属性 135
12.1.3 属性观察者 136
12.2 计算属性 136
12.2.1 计算属性概念 136
12.2.2 只读计算属性 138
12.2.3 结构体和枚举中的计算属性 139
12.3 属性观察者 139
12.4 静态属性 141
12.4.1 结构体静态属性 143
12.4.2 枚举静态属性 144
12.4.3 类静态属性 145
12.5 使用下标 145
12.5.1 下标概念 146
12.5.2 示例:二维数组 146
12.6 本章小结 148
12.7 同步练习 148
第13章 方法 150
13.1 实例方法 150
13.1.1 使用规范的命名 151
13.1.2 结构体和枚举方法变异 154
13.2 静态方法 155
13.2.1 结构体中静态方法 155
13.2.2 枚举中静态方法 156
13.2.3 类中静态方法 156
13.3 本章小结 157
13.4 同步练习 157
第14章 构造与析构 158
14.1 构造器 158
14.1.1 默认构造器 158
14.1.2 构造器与存储属性初始化 159
14.1.3 使用外部参数名 160
14.2 构造器重载 162
14.2.1 构造器重载概念 162
14.2.2 值类型构造器代理 163
14.2.3 引用类型构造器横向代理 164
14.3 析构器 165
14.4 本章小结 166
14.5 同步练习 166
第15章 继承 169
15.1 从一个示例开始 169
15.2 构造器继承 170
15.2.1 构造器调用规则 170
15.2.2 构造过程安全检查 172
15.2.3 构造器自动继承 175
15.3 重写 177
15.3.1 属性重写 177
15.3.2 方法重写 179
15.3.3 下标重写 180
15.3.4 使用final关键字 182
15.4 类型检查与转换 183
15.4.1 使用is操作符 185
15.4.2 使用as操作符 185
15.4.3 使用Any和AnyObject类型 187
15.5 本章小结 187
15.6 同步练习 188
第16章 扩展和协议 190
16.1 扩展 190
16.1.1 声明扩展 190
16.1.2 扩展计算属性 191
16.1.3 扩展方法 192
16.1.4 扩展构造器 193
16.1.5 扩展下标 195
16.2 协议 196
16.2.1 声明和遵守协议 197
16.2.2 协议方法 197
16.2.3 协议属性 200
16.2.4 把协议作为类型使用 202
16.2.5 协议的继承 204
16.2.6 协议的合成 205
16.3 扩展中声明协议 207
16.4 本章小结 207
16.5 同步练习 208
第17章 Swift内存管理 210
17.1 Swift内存管理概述 210
17.1.1 引用计数 210
17.1.2 示例:Swift自动引用计数 211
17.2 强引用循环 213
17.3 打破强引用循环 216
17.3.1 弱引用 216
17.3.2 无主引用 218
17.4 闭包中的强引用循环 220
17.4.1 一个闭包中的强引用循环示例 221
17.4.2 解决闭包强引用循环 221
17.5 本章小结 223
17.6 同步练习 223
第三部分 过渡篇 226
第18章 从Objective-C到Swift 226
18.1 选择语言 226
18.2 Swift调用Objective-C 226
18.2.1 创建Swift工程 227
18.2.2 在Swift工程中添加Objective-C类 229
18.2.3 调用代码 230
18.3 Objective-C调用Swift 232
18.3.1 创建Objective-C工程 233
18.3.2 在Objective-C工程中添加Swift类 234
18.3.3 调用代码 235
18.4 本章小结 236
18.5 同步练习 237
第19章 使用Foundation框架 238
19.1 数字类NSNumber 238
19.1.1 获得NSNumber实例 238
19.1.2 NSNumber对象的比较 241
19.2 字符串类 242
19.2.1 NSString类 242
19.2.2 NSMutableString类 245
19.2.3 NSString与String之间的关系 246
19.3 数组类 247
19.3.1 NSArray类 247
19.3.2 NSMutableArray类 248
19.3.3 NSArray与Array之间的关系 249
19.4 字典类 250
19.4.1 NSDictionary类 250
19.4.2 NSMutableDictionary类 251
19.4.3 NSDictionary与Dictionary 之间的关系 252
19.5 本章小结 253
19.6 同步练习 253
第四部分 实战篇 256
第20章 iOS开发基础 256
20.1 iOS介绍 256
20.2 第一个iOS应用HelloWorld 257
20.2.1 创建工程 257
20.2.2 Xcode中的iOS工程模板 265
20.2.3 程序剖析 266
20.3 iOS API简介 268
20.4 本章小结 268
20.5 同步练习 268
第21章 项目实战——基于分层架构的多版本iPhone计算器 270
21.1 应用分析与设计 270
21.1.1 应用概述 270
21.1.2 需求分析 270
21.1.3 原型设计 271
21.1.4 分层架构设计 272
21.1.5 应用设计 273
21.2 创建工程 274
21.3 业务逻辑层开发 276
21.3.1 创建CalcLogic.swift文件 276
21.3.2 枚举类型Operator 277
21.3.3 CalcLogic类中属性 278
21.3.4 CalcLogic类中构造器和析构器 278
21.3.5 CalcLogic类中更新主标签方法 279
21.3.6 CalcLogic类中判断是否包含小数点方法 280
21.3.7 CalcLogic类中计算方法 280
21.3.8 CalcLogic类中清除方法 281
21.4 表示层开发 282
21.4.1 添加图片资源 282
21.4.2 改变设计界面大小 284
21.4.3 添加计算器背景 284
21.4.4 在设计界面中添加主标签 286
21.4.5 在设计界面中添加按钮 288
21.4.6 控件的输出口和动作 292
21.4.7 视图控制器 296
21.5 Objective-C版本的计算器 297
21.5.1 Xcode工程文件结构比较 297
21.5.2 表示层比较 298
21.5.3 业务逻辑层比较 299
21.6 Swift调用Objective-C实现的计算器 302
21.6.1 在Swift工程中添加Objective-C类 303
21.6.2 调用代码 305
21.7 Objective-C调用Swift实现的计算器 306
21.7.1 在Objective-C工程中添加Swift类 306
21.7.2 调用代码 307
21.8 本章小结 310
21.9 同步练习 310