第1章 Cocoa开发工具 1
1.1 Mac和iOS开发者计划 1
1.1.1 注册开发者计划 2
1.1.2 下载Xcode 3
1.2 用Xcode创建自己的第一个项目 4
1.3 开发一个简单的Swift应用程序 11
1.3.1 设计界面 11
1.3.2 连接代码 13
1.4 使用iOS模拟器 14
1.5 用TestFlight测试iOS App 16
第2章 用Swift设计程序 17
2.1 Swift程序设计语言 17
2.2 playground 19
2.3 变量和常量 20
2.4 类型 21
2.4.1 元组 23
2.4.2 数组 23
2.4.3 字典 25
2.5 控制流 25
2.6 函数与闭包 29
2.6.1 将函数用作变量 32
2.6.2 闭包 34
2.7 对象 35
2.7.1 继承 36
2.7.2 初始化与反初始化 37
2.7.3 属性 38
2.7.4 协议 40
2.7.5 扩展 41
2.7.6 访问控制 43
2.7.7 运算符 44
2.7.8 泛型 45
2.8 与Objective-C的互操作 46
2.9 在同一项目中使用Objective-C和Swift 46
2.9.1 在Objective-C中使用Swift对象 46
2.9.2 在Swift中使用Objective-C 47
2.10 模块 48
2.11 内存管理 48
2.12 字符串 49
2.12.1 比较字符串 50
2.12.2 查找字符串 50
2.13 数据 50
2.13.1 从文件和URL加载数据 51
2.13.2 序列化与反序列化 51
2.14 Cocoa中的设计模式 52
2.14.1 模型-视图-控制器 52
2.14.2 委托 53
第3章 OSX和iOS上的应用程序 56
3.1 什么是应用程序 56
3.1.1 应用程序、框架、实用工具及其他 57
3.1.2 App的构成 58
3.1.3 用NSBundle在应用程序中查找资源 60
3.2 应用程序生命周期 61
3.2.1 OSX应用程序 61
3.2.2 iOS应用程序 62
3.3 应用程序沙盒 67
3.4 用NSNotification发送通知 70
第4章 图形用户界面 72
4.1 OSX和iOS中的界面 72
4.2 MVC和应用程序设计 73
4.3 nib文件和故事板 73
4.3.1 nib文件的结构 74
4.3.2 故事板 77
4.3.3 输出口和操作 77
4.3.4 如何加载nib文件和故事板 78
4.4 构建界面 79
4.5 构建具有nib和约束的App 81
4.6 iOS上的界面 84
4.7 UI Dynamics 87
4.7.1 UI和重力 87
4.7.2 吸附UI 88
4.8 Core Animation 89
4.8.1 层 90
4.8.2 动画 91
第5章 闭包和操作队列 94
5.1 Cocoa中的闭包 95
5.2 操作队列中的并发 96
5.3 操作队列和NSOperation 96
5.4 在操作队列中执行工作 97
5.5 融会贯通 98
第6章 在视图上绘制图形 103
6.1 如何绘制 103
6.2 像素网格 105
6.2.1 Retina显示屏 106
6.2.2 像素与屏幕点 107
6.3 在视图中绘制 107
6.3.1 框架矩形 107
6.3.2 边界矩形 108
6.4 创建自定义视图 109
6.4.1 用纯色填充 110
6.4.2 处理路径 111
6.4.3 创建自定义路径 112
6.4.4 多条子路径 114
6.4.5 阴影 115
6.4.6 渐变 119
6.4.7 变换 121
第7章 SpriteKit 123
7.1 SpriteKit的体系结构 123
7.2 制作使用SpriteKit的App 124
7.3 使用SpriteKit场景 125
7.4 SpriteKit节点 127
7.5 将精灵放在场景中 128
7.6 对触碰作出响应 129
7.7 使用纹理 130
7.8 纹理贴图集 131
7.9 使用文本 131
7.10 用操作实现内容的动画 133
7.11 使用形状节点 134
7.12 使用图像特效节点 135
7.13 向SpirteKit对象增加物理属性 137
7.14 向SpriteKit对象添加接合 138
7.15 SpriteKit场景照明 138
7.16 约束 139
7.17 在SpriteKit中使用阴影 140
7.18 使用SpriteKit编辑器 142
第8章 SceneKit 143
8.1 SceneKit结构 144
8.2 使用SceneKit 144
8.3 添加SceneKit视图 145
8.4 添加场景 146
8.5 添加照相机 146
8.6 添加3D对象 147
8.7 添加光源 149
8.8 为场景中的内容实现动画 150
8.9 创建文本几何体 151
8.10 使用材料 153
8.11 命中检测 157
8.12 约束 158
8.13 从COLLADA文件中加载数据 160
8.14 向场景中添加物理仿真 162
第9章 音频与视频 165
9.1 AV Foundation 165
9.2 用AVPlayer播放视频 166
9.2.1 AVPlayerLayer 167
9.2.2 融会贯通 167
9.2.3 AVKit 170
9.2.4 iOS上的AVKit 172
9.2.5 用AVAudioPlayer播放声音 174
9.3 语音合成 175
9.4 使用照片库 176
9.4.1 从相机采集照片和视频 176
9.4.2 开发照片应用程序 178
9.4.3 照片库 181
第10章 iCloud和数据存储 182
10.1 偏好设置 182
10.1.1 注册默认偏好设置 183
10.1.2 访问偏好设置 184
10.1.3 设定偏好设置 184
10.2 使用文件系统 184
10.2.1 使用NSFileManager 186
10.2.2 文件存储位置 189
10.3 使用沙盒 189
10.3.1 启用沙盒 190
10.3.2 打开和保存面板 190
10.3.3 安全范围内的书签 191
10.4 iCould 192
10.5 iCloud存储什么 193
10.6 为iCloud进行设置 194
10.7 测试iCloud是否正常工作 194
10.8 存储设置 195
10.8.1 处理外部修改 196
10.8.2 iOS上的相应内容 197
10.9 iCloud存储 199
10.9.1 OSX上的iCloud存储 200
10.9.2 iOS上的iCloud存储 204
10.10 文档选取器 206
10.11 iCloud的最佳使用 210
第11章 Cocoa绑定 211
11.1 将视图绑定到模型 211
11.2 一个简单的绑定App 212
11.3 绑定到控制器 214
11.4 数组和对象控制器 216
11.5 一个更复杂的绑定App 216
第12章 表格视图和集合视图 223
12.1 数据源和委托 223
12.2 表格视图 224
12.2.1 iOS上的UITableView 224
12.2.2 OSX上的NSTableView 231
12.3 集合视图 236
第13章 基于文档的应用程序 240
13.1 NSDocument和UIDocument类 241
13.2 MVC中的文档对象 241
13.2.1 文档的类型 241
13.2.2 文档的角色 242
13.3 OSX上基于文档的应用程序 243
13.3.1 自动保存与版本 243
13.3.2 用NSDocument表示文档 243
13.3.3 保存简单数据 244
13.3.4 保存更复杂的数据 246
13.4 iOS上基于文档的应用程序 250
第14章 联网 257
14.1 连接 257
14.1.1 NSURL 258
14.1.2 NSURLRequest 259
14.1.3 NSURLSession 259
14.1.4 NSURLResponse和NSHTTPURLResponse 260
14.2 开发联网应用程序 261
14.3 Bonjour服务的发现 262
14.4 Multipeer Connectivity 264
第15章 与现实世界互动 269
15.1 使用位置 269
15.1.1 位置硬件 270
15.1.2 Core Location框架 271
15.1.3 使用Core Location 272
15.2 地理编码 275
15.3 区域监测和iBeacon 278
15.4 位置与隐私 281
15.5 地图 281
15.5.1 使用地图 281
15.5.2 标记地图 282
15.5.3 地图与覆盖物 282
15.6 设备运动 284
15.6.1 使用Core Motion 285
15.6.2 使用内置高度计 288
15.6.3 使用计步器 289
15.7 打印文档 290
15.7.1 在OSX上打印 291
15.7.2 在iOS上打印 291
15.8 Game Controller 293
15.9 App Nap 295
15.10 用Touch ID验证 296
15.11 Handoff 300
第16章 EventKit 305
16.1 理解事件 305
16.2 访问事件存储库 306
16.3 访问日历 307
16.4 访问事件 307
16.5 处理事件 308
16.6 开发一个事件应用程序 310
16.7 用户隐私 314
第17章 Instruments和调试器 315
17.1 开始使用Instruments 316
17.1.1 Instruments界面 318
17.1.2 观察数据 318
17.1.3 从Library中添加Instruments 319
17.2 用Instruments解决问题 320
17.3 循环保留和漏洞 324
17.4 使用调试器 326
17.4.1 设置断点 326
17.4.2 查看内存内容 328
17.4.3 使用调试器控制台 329
17.5 视图调试 329
17.6 测试框架 331
17.6.1 编写测试 332
17.6.2 编写异步测试 333
17.6.3 性能测试块 334
17.7 调试仪表 334
17.8 性能优化 334
第18章 共享与通知 336
18.1 共享 336
18.2 在iOS上共享 339
18.3 在OSX上共享 341
18.4 通知 342
18.4.1 注册通知设置 342
18.4.2 推送通知 347
18.4.3 通知到达时会发生什么 347
18.5 发送推送通知 348
18.6 设置接收推送通知 349
18.7 接收推送通知 350
18.8 本地通知 352
第19章 非标准App 354
19.1 命令行工具 354
19.2 偏好设置窗格 355
19.2.1 偏好设置窗格如何工作 356
19.2.2 偏好设置域 356
19.2.3 生成示例偏好设置窗格 357
19.3 状态栏项目 359
19.4 多窗口iOS App 361
第20章 处理文本 364
20.1 国际化与本地化 364
20.1.1 字符串文件 364
20.1.2 创建一个示例本地化应用程序 365
20.2 用NSFormatter设定数据格式 372
20.3 设定数字、长度、质量、能量和数据的格式 374
20.3.1 NSNumberFormatter 374
20.3.2 NSEnergyFormatter、NSMassFormatter和NSLengthFormatter 375
20.3.3 NSByteCountFormatter 376
20.4 用NSDataDetector检测数据 377
20.5 TextKit 379
作者介绍 382
封面介绍 382