第一部分 基础篇 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 代码解释 20
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章 控制语句 53
7.1 分支语句 53
7.1.1 条件语句if 53
7.1.2 多分支语句switch 55
7.1.3 在switch中使用范围匹配 57
7.1.4 在switch中比较元组类型 58
7.2 循环语句 60
7.2.1 while语句 60
7.2.2 do while语句 62
7.2.3 for语句 62
7.2.4 for in语句 63
7.3 跳转语句 64
7.3.1 break语句 65
7.3.2 continue语句 66
7.3.3 fallthrough语句 68
7.4 本章小结 70
7.5 同步练习 70
第8章 集合 74
8.1 数组集合 74
8.1.1 数组声明与初始化 75
8.1.2 数组的修改 76
8.1.3 数组遍历 77
8.2 字典集合 77
8.2.1 字典声明与初始化 78
8.2.2 字典的修改 79
8.2.3 字典遍历 80
8.3 集合的复制 81
8.3.1 字典复制 81
8.3.2 数组复制 83
8.4 本章小结 85
8.5 同步练习 85
第9章 函数 87
9.1 使用函数 87
9.2 传递参数 88
9.2.1 使用外部参数名 88
9.2.2 参数默认值 89
9.2.3 可变参数 89
9.2.4 参数的传递引用 90
9.3 函数返回值 91
9.3.1 无返回值函数 91
9.3.2 多返回值函数 92
9.4 函数类型 92
9.4.1 作为函数返回类型使用 93
9.4.2 作为参数类型使用 94
9.5 函数重载 95
9.6 嵌套函数 96
9.7 泛型和泛型函数 97
9.7.1 一个问题的思考 98
9.7.2 泛型函数 98
9.8 本章小结 99
9.9 同步练习 99
第10章 闭包 103
10.1 回顾嵌套函数 103
10.2 闭包的概念 104
10.3 使用闭包表达式 105
10.3.1 类型推断简化 105
10.3.2 隐藏return关键字 106
10.3.3 缩写参数名称 106
10.3.4 使用闭包返回值 107
10.4 使用尾随闭包 107
10.5 捕获上下文中的变量和常量 108
10.6 本章小结 109
10.7 同步练习 109
第二部分 面向对象篇 112
第11章 Swift语言中的面向对象特性 112
11.1 面向对象概念和基本特征 112
11.2 Swift中的面向对象类型 112
11.3 枚举 113
11.3.1 成员值 113
11.3.2 原始值 115
11.3.3 相关值 116
11.4 结构体与类 118
11.4.1 类和结构体定义 118
11.4.2 再谈值类型和引用类型 119
11.4.3 引用类型的比较 121
11.5 类型嵌套 122
11.6 可选类型与可选链 123
11.6.1 可选类型 123
11.6.2 可选链 124
11.7 访问限定 127
11.7.1 访问范围 127
11.7.2 访问级别 129
11.7.3 使用访问级别最佳实践 130
11.8 本章小结 133
11.9 同步练习 133
第12章 属性与下标 137
12.1 存储属性 137
12.1.1 存储属性概念 137
12.1.2 延迟存储属性 138
12.1.3 属性观察者 139
12.2 计算属性 139
12.2.1 算属性概念 139
12.2.2 读计算属性 141
12.2.3 结构体和枚举中的计算属性 142
12.3 属性观察者 142
12.4 静态属性 144
12.4.1 结构体静态属性 146
12.4.2 枚举静态属性 147
12.4.3 类静态属性 148
12.5 使用下标 148
12.5.1 下标概念 149
12.5.2 示例:二维数组 149
12.6 本章小结 151
12.7 同步练习 151
第13章 方法 153
13.1 实例方法 153
13.1.1 使用规范的命名 154
13.1.2 结构体和枚举方法变异 157
13.2 静态方法 158
13.2.1 结构体中静态方法 158
13.2.2 枚举中静态方法 159
13.2.3 类中静态方法 159
13.3 本章小结 160
13.4 同步练习 160
第14章 构造与析构 161
14.1 构造器 161
14.1.1 默认构造器 161
14.1.2 构造器与存储属性初始化 162
14.1.3 使用外部参数名 163
14.2 构造器重载 165
14.2.1 构造器重载概念 165
14.2.2 值类型构造器代理 166
14.2.3 引用类型构造器横向代理 167
14.3 析构器 168
14.4 本章小结 173
14.5 同步练习 173
第15章 继承 175
15.1 从一个示例开始 175
15.2 构造器继承 176
15.2.1 构造器调用规则 176
15.2.2 构造过程安全检查 178
15.2.3 构造器继承 180
15.3 重写 182
15.3.1 属性重写 182
15.3.2 方法重写 185
15.3.3 下标重写 186
15.3.4 使用final关键字 187
15.4 类型检查与转换 189
15.4.1 使用is操作符 190
15.4.2 使用as操作符 191
15.4.3 使用Any和AnyObject类型 192
15.5 本章小结 193
15.6 同步练习 193
第16章 扩展和协议 195
16.1 扩展 195
16.1.1 声明扩展 195
16.1.2 扩展计算属性 196
16.1.3 扩展方法 197
16.1.4 扩展构造器 198
16.1.5 扩展下标 200
16.2 协议 201
16.2.1 声明和遵守协议 202
16.2.2 协议方法 202
16.2.3 协议属性 205
16.2.4 把协议作为类型使用 207
16.2.5 协议的继承 209
16.2.6 协议的合成 210
16.3 扩展中声明协议 212
16.4 本章小结 212
16.5 同步练习 213
第17章 Swift内存管理 215
17.1 Swift内存管理概述 215
17.1.1 引用计数 215
17.1.2 示例:Swift自动引用计数 216
17.2 强引用循环 218
17.3 打破强引用循环 221
17.3.1 弱引用 221
17.3.2 无主引用 223
17.4 闭包中的强引用循环 225
17.4.1 一个闭包中的强引用循环示例 226
17.4.2 解决闭包强引用循环 226
17.5 本章小结 228
17.6 同步练习 228
第三部分 过渡篇 232
第18章 从Objective-C到Swift 232
18.1 选择语言 232
18.2 Swift调用Objective-C 232
18.2.1 创建Swift的iOS工程 233
18.2.2 在Swift工程中添加Objective-C类 234
18.2.3 调用代码 235
18.3 Objective-C调用Swift 236
18.3.1 创建Objective-C的iOS工程 236
18.3.2 在Objective-C工程中添加Swift类 238
18.3.3 调用代码 240
18.4 本章小结 241
18.5 同步练习 241
第19章 使用Foundation框架 243
19.1 数字类NSNumber 243
19.1.1 获得NSNumber实例 243
19.1.2 NSNumber对象的比较 246
19.2 字符串类 247
19.2.1 NSString类 247
19.2.2 NSMutableString类 250
19.2.3 NSString与String之间的关系 251
19.3 数组类 252
19.3.1 NSArray类 252
19.3.2 NSMutableArray类 253
19.3.3 NSArray与Array之间的关系 254
19.4 字典类 255
19.4.1 NSDictionary类 255
19.4.2 NSMutableDictionary类 256
19.4.3 NSDictionary与Dictionary之间的关系 257
19.5 本章小结 258
19.6 同步练习 258
第四部分 实战篇 260
第20章 iOS开发基础 260
20.1 iOS介绍 260
20.2 第一个iOS应用HelloWorld 261
20.2.1 创建工程 261
20.2.2 Xcode中的iOS工程模板 268
20.2.3 程序剖析 269
20.3 iOS API简介 271
20.4 本章小结 272
20.5 同步练习 272
第21章 项目实战——基于分层架构的多版本iPhone计算器 273
21.1 应用分析与设计 273
21.1.1 应用概述 273
21.1.2 需求分析 273
21.1.3 原型设计 274
21.1.4 分层架构设计 275
21.1.5 应用设计 276
21.2 创建工程 277
21.3 业务逻辑层开发 279
21.3.1 创建CalcLogic.swift文件 279
21.3.2 枚举类型Operator 280
21.3.3 CalcLogic类中属性 281
21.3.4 CalcLogic类中构造器和析构器 281
21.3.5 CalcLogic类中更新主标签方法 282
21.3.6 CalcLogic类中判断是否包含小数点方法 283
21.3.7 CalcLogic类中计算方法 283
21.3.8 CalcLogic类中清除方法 284
21.4 表示层开发 285
21.4.1 添加图片资源 285
21.4.2 改变设计界面大小 287
21.4.3 添加计算器背景 287
21.4.4 在设计界面中添加主标签 289
21.4.5 在设计界面中添加按钮 291
21.4.6 控件的输出口和动作 295
21.4.7 视图控制器 299
21.5 Objective-C版本的计算器 300
21.5.1 Xcode工程文件结构比较 300
21.5.2 表示层比较 301
21.5.3 业务逻辑层比较 302
21.6 Swift调用Objective-C实现的计算器 305
21.6.1 在Swift工程中添加Objective-C类 306
21.6.2 调用代码 308
21.7 Objective-C调用Swift实现的计算器 309
21.7.1 在Objective-C工程中添加Swift类 309
21.7.2 调用代码 310
21.8 本章小结 313
21.9 同步练习 313