第1章 为开发准备好系统和iOS设备 1
1.1欢迎进入iOS平台 1
1.1.1 iOS设备 1
1.1.2显示屏和图形 2
1.1.3应用程序资源约束 3
1.1.4连接性 3
1.1.5输入和反馈 4
1.2成为iOS开发人员 4
1.2.1加入Apple开发人员计划 4
1.2.2安装iOS开发工具 7
1.3创建开发供应配置文件 8
1.3.1什么是开发供应配置文件 9
1.3.2配置用于测试的设备 9
1.4运行第一个iOS应用程序 11
1.5开发技术概述 13
1.5.1 Apple开发套件 13
1.5.2 Objective-C 14
1.5.3 CoCoaTouch 14
1.5.4模型-视图-控制器 14
1.6进一步探索 14
1.7小结 14
1.8问与答 15
1.9作业 15
1.9.1测验 15
1.9.2答案 15
1.9.3练习 16
第2章Xcode和iOS模拟器简介 17
2.1使用Xcode 17
2.1.1创建和管理项目 18
2.1.2删除文件和资源 23
2.1.3编辑和导航代码 24
2.1.4生成应用程序 30
2.1.5管理项目属性 33
2.2使用iOS模拟器 37
2.2.1在模拟器中启动应用程序 38
2.2.2模拟多点触摸事件 39
2.2.3旋转模拟的设备 40
2.2.4模拟其他情况 40
2.3进一步探索 42
2.4小结 42
2.5问与答 42
2.6作业 42
2.6.1 测验 42
2.6.2答案 43
2.6.3练习 43
第3章 探索Apple平台语言Objective-C 44
3.1面向对象编程和Objective-C 44
3.1.1什么是面向对象编程 45
3.1.2面向对象编程术语 46
3.1.3什么是Objective-C 47
3.2探索Objective-C文件结构 47
3.2.1头文件/接口文件 48
3.2.2实现文件 52
3.2.3自动生成的结构 54
3.3 Objective-C编程基础 54
3.3.1声明变量 55
3.3.2分配和初始化对象 56
3.3.3使用方法及发送消息 57
3.3.4表达式和决策 59
3.4内存管理和ARC 63
3.4.1旧方式:保留并释放对象 63
3.4.2新方式:自动引用计数 63
3.5进一步探索 64
3.6小结 65
3.7问与答 65
3.8作业 66
3.8.1测验 66
3.8.2答案 66
3.8.3练习 66
第4章Cocoa Touch内幕 67
4.1 Cocoa Touch是什么 67
4.1.1冷静面对大量的功能 68
4.1.2年轻而成熟 68
4.2探索iPhone技术层 69
4.2.1 Cocoa Touch层 69
4.2.2多媒体层 70
4.2.3核心服务层 71
4.2.4核心OS层 72
4.3跟踪iOS应用程序的生命周期 73
4.4 Cocoa基础 74
4.4.1核心应用程序类 74
4.4.2数据类型类 76
4.4.3界面类 78
4.5使用Xcode探索iOS框架 80
4.5.1 Xcode文档 81
4.5.2快速帮助 82
4.6进一步探索 84
4.7小结 85
4.8问与答 85
4.9作业 85
4.9.1测验 85
4.9.2答案 85
4.9.3练习 86
第5章 探索Xcode Interface Builder 87
5.1了解Interface Builder 87
5.1.1 Interface Builder采用的方法 88
5.1.2剖析Interface Builder故事板 88
5.2创建用户界面 92
5.2.1对象库 92
5.2.2将对象加入到视图中 93
5.2.3使用IB布局工具 94
5.3定制界面外观 96
5.3.1使用属性检查器 97
5.3.2设置辅助功能属性 98
5.3.3测试界面 99
5.4连接到代码 100
5.4.1打开项目 100
5.4.2实现概述 101
5.4.3输出口和操作 101
5.4.4对象身份 106
5.5进一步探索 106
5.6小结 107
5.7问与答 107
5.8作业 108
5.8.1测验 108
5.8.2答案 108
5.8.3练习 108
第6章 模型-视图-控制器应用程序设计 109
6.1了解设计模式模型-视图-控制器 109
6.1.1制作意大利面条 110
6.1.2使用MVC将应用程序设计结构化 110
6.2 Xcode如何实现MVC 111
6.2.1视图 111
6.2.2视图控制器 111
6.2.3数据模型 113
6.3使用模板Single View Application 114
6.3.1实现概述 114
6.3.2创建项目 115
6.3.3规划变量和连接 118
6.3.4设计界面 121
6.3.5创建并连接输出口和操作 123
6.3.6实现应用程序逻辑 126
6.3.6生成应用程序 127
6.4进一步探索 127
6.5小结 127
6.6问与答 128
6.7作业 128
6.7.1测验 128
6.7.2答案 128
6.7.3练习 129
第7章 使用文本、键盘和按钮 130
7.1基本用户输入和输出 130
7.1.1按钮 130
7.1.2文本框和文本视图 131
7.1.3标签 131
7.2使用文本框、文本视图和按钮 132
7.2.1实现概述 132
7.2.2创建项目 132
7.2.3设计界面 133
7.2.4创建并连接输出口和操作 141
7.2.5实现按钮模板 143
7.2.6 隐藏键盘 145
7.2.7实现应用程序逻辑 148
7.2.8生成应用程序 149
7.3进一步探索 150
7.4小结 150
7.5问与答 150
7.6作业 151
7.6.1测验 151
7.6.2答案 151
7.6.3练习 151
第8章 处理图像、动画、滑块和步进控件 152
8.1用户输入和输出 152
8.1.1滑块 152
8.1.2步进控件 153
8.1.3图像视图 153
8.2创建并管理图像动画、滑块和步进控件 153
8.2.1实现概述 154
8.2.2创建项目 154
8.2.3设计界面 155
8.2.4创建并连接到输出口和操作 161
8.2.5实现应用程序逻辑 163
8.2.6生成应用程序 168
8.3进一步探索 169
8.4小结 169
8.5问与答 169
8.6作业 170
8.6.1测验 170
8.6.2答案 170
8.6.3练习 170
第9章 使用高级界面对象和视图 171
9.1再谈用户输入和输出 171
9.1.1开关 171
9.1.2分段控件 172
9.1.3 Web视图 173
9.1.4可滚动的视图 174
9.2使用开关、分段控件和Web视图 174
9.2.1实现概述 175
9.2.2创建项目 175
9.2.3设计界面 176
9.2.4创建并连接输出口和操作 181
9.2.5实现应用程序逻辑 184
9.2.6生成应用程序 187
9.3使用可滚动视图 187
9.3.1实现概述 188
9.3.2创建项目 188
9.3.3设计界面 189
9.3.4创建并连接输出口和操作 190
9.3.5实现应用程序逻辑 191
9.3.6生成应用程序 192
9.4进一步探索 192
9.5小结 192
9.6问与答 193
9.7作业 193
9.7.1测验 193
9.7.2答案 193
9.7.3练习 193
第10章 引起用户注意 194
10.1提醒用户 194
10.1.1提醒视图 195
10.1.2操作表 197
10.1.3系统声音服务 199
10.2探索提醒用户的方法 201
10.2.1实现概述 201
10.2.2创建项目 201
10.2.3设计界面 203
10.2.4创建并连接输出口和操作 204
10.2.5实现提醒视图 205
10.2.6实现操作表 211
10.2.7实现提醒音和震动 213
10.3进一步探索 215
10.4小结 215
10.5问与答 216
10.6作业 216
10.6.1测验 216
10.6.2答案 216
10.6.3练习 216
第11章 实现多场景和弹出框 217
11.1多场景故事板简介 217
11.1.1术语 218
11.1.2创建多场景项目 219
11.1.3创建切换 223
11.1.4手工控制模态切换 225
11.1.5以编程方式创建模态场景切换 226
11.1.6在场景之间传递数据 228
11.2理解iPad弹出框 230
11.2.1创建弹出框 231
11.2.2创建弹出切换 231
11.2.3手工显示弹出框 233
11.2.4响应用户关闭弹出框 233
11.2.5以编程方式创建并显示弹出框 235
11.3使用模态切换 238
11.3.1实现概述 238
11.3.2创建项目 238
11.3.4设计界面 240
11.3.5创建模态切换 241
11.3.6创建并连接输出口和操作 242
11.3.7实现应用程序逻辑 243
11.3.8生成应用程序 244
11.4使用弹出框 245
11.4.1创建项目 245
11.4.2设计界面 245
11.4.3创建弹出切换 246
11.4.4创建并连接输出口 247
11.4.5实现应用程序逻辑 247
11.4.6生成应用程序 249
11.5进一步探索 249
11.6小结 249
11.7问与答 249
11.8作业 250
11.8.1测验 250
11.8.2答案 250
11.8.3练习 250
第12章 使用工具栏和选择器做出选择 251
12.1了解工具栏 251
12.2探索选择器 254
12.2.1日期选择器 255
12.2.2选择器视图 256
12.3使用日期选择器 260
12.3.1实现概述 261
12.3.2创建项目 261
12.3.3设计界面 262
12.3.4创建切换 263
12.3.5创建并连接输出口和操作 264
12.3.6实现场景切换逻辑 265
12.3.7实现日期计算逻辑 268
12.3.8生成应用程序 271
12.4实现自定义选择器 272
12.4.1实现概述 272
12.4.2创建项目 272
12.4.3设计界面 274
12.4.4创建切换 275
12.4.5创建并连接输出口和操作 276
12.4.6实现场景切换逻辑 276
12.4.7实现自定义选择器视图 278
12.4.8生成应用程序 284
12.5进一步探索 284
12.6小结 285
12.7问与答 285
12.8作业 286
12.8.1测验 286
12.8.2答案 286
12.8.3练习 286
第13章 使用导航控制器和选项卡栏控制器 287
13.1高级视图控制器 287
13.2探索导航控制器 289
13.2.1导航栏、导航项和栏按钮项 289
13.2.2在故事板中使用导航控制器 290
13.2.3在导航场景之间共享数据 292
13.3了解选项卡栏控制器 293
13.3.1选项卡栏和选项卡栏项 293
13.3.2在故事板中使用选项卡栏控制器 294
13.3.3在选项卡栏控制器管理的场景之间共享数据 296
13.4使用导航控制器 297
13.4.1实现概述 297
13.4.2创建项目 297
13.4.3创建压入切换 299
13.4.4设计界面 300
13.4.5创建并连接输出口和操作 301
13.4.6实现应用程序逻辑 302
13.4.7生成应用程序 303
13.5使用选项卡栏控制器 303
13.5.1实现概述 304
13.5.2创建项目 304
13.5.3创建选项卡栏关系 305
13.5.4设计界面 306
13.5.5创建并连接输出口和操作 307
13.5.6实现应用程序逻辑 308
13.5.7生成应用程序 310
13.6进一步探索 310
13.7小结 311
13.8问与答 311
13.9作业 312
13.9.1测验 312
13.9.2答案 312
13.9.3练习 312
第14章 使用表视图和分割视图控制器导航数据 313
14.1了解表视图 313
14.1.1表视图的外观 314
14.1.2表单元格 314
14.1.3添加表视图 315
14.2探索分割视图控制器(仅适用于iPad) 320
14.2.1实现分割视图控制器 321
14.2.2模板Master-Detail Application 322
14.3一个简单的表视图应用程序 323
14.3.1实现概述 323
14.3.2创建项目 323
14.3.3设计界面 324
14.3.4连接输出口delegate和dataSource 325
14.3.5实现应用程序逻辑 326
14.3.6生成应用程序 331
14.4创建基于主-从视图的应用程序 331
14.4.1实现概述 331
14.4.2创建项目 332
14.4.3调整iPad界面 333
14.4.4调整iPhone界面 335
14.4.5实现应用程序数据源 336
14.4.6实现主视图控制器 339
14.4.7实现细节视图控制器 341
14.4.8修复细节视图控制器引用问题 342
14.4.9生成应用程序 343
14.5进一步探索 343
14.6小结 344
14.7问与答 344
14.8作业 344
14.8.1测验 344
14.8.2答案 345
14.8.3练习 345
第15章 读写应用程序数据 346
15.1 iOS应用程序和数据存储 346
15.2数据存储方式 348
15.2.1用户默认设置 348
15.2.2设置束 349
15.2.3直接访问文件系统 351
15.3创建隐式首选项 354
15.3.1实现概述 354
15.3.2创建项目 354
15.3.3创建界面 355
15.3.4创建并连接输出口和操作 356
15.3.5实现应用程序逻辑 357
15.3.6生成应用程序 359
15.4实现系统设置 360
15.4.1实现概述 360
15.4.2创建项目 360
15.4.3设计界面 361
15.4.4创建并连接输出口 362
15.4.5创建设置束 362
15.4.6实现应用程序逻辑 368
15.4.7生成应用程序 369
15.5实现文件系统存储 369
15.5.1实现概述 370
15.5.2创建项目 370
15.5.3设计界面 370
15.5.4创建并连接输出口和操作 371
15.5.5实现应用程序逻辑 373
15.6进一步探索 376
15.7小结 376
15.8问与答 377
15.9作业 377
15.9.1测验 377
15.9.2答案 377
15.9.3练习 377
第16章 创建可旋转及调整大小的用户界面 379
16.1可旋转和调整大小的界面 379
16.1.1启用界面旋转 380
16.1.2设计可旋转和调整大小的界面 381
16.2使用Interface Builder创建可旋转和调整大小的界面 382
16.2.1实现概述 383
16.2.2创建项目 383
16.2.3设计灵活的界面 383
16.2.4生成应用程序 386
16.3旋转时调整控件的框架 387
16.3.1实现概述 387
16.3.2创建项目 387
16.3.3设计界面 387
16.3.4创建并连接输出口 390
16.3.5实现应用程序逻辑 391
16.3.6生成应用程序 392
16.4旋转时切换视图 392
16.4.1实现概述 392
16.4.2创建项目 393
16.4.3设计界面 393
16.4.4创建并连接输出口 395
16.4.5实现应用程序逻辑 396
16.4.6生成应用程序 397
16.5进一步探索 398
16.6小结 398
16.7问与答 398
16.8作业 398
16.8.1测验 398
16.8.2答案 399
16.8.3练习 399
第17章 使用复杂的触摸和手势 400
17.1多点触摸手势识别 400
17.2使用手势识别器 403
17.2.1实现概述 403
17.2.2创建项目 403
17.2.3设计界面 405
17.2.4给视图添加手势识别器 406
17.2.5创建并连接输出口和操作 409
17.2.6实现应用程序逻辑 411
17.2.7生成应用程序 417
17.3进一步探索 417
17.4小结 417
17.5问与答 418
17.6作业 418
17.6.1测验 418
17.6.2答案 418
17.6.3练习 418
第18章 检测朝向和移动 419
18.1理解运动硬件 419
18.1.1加速计 420
18.1.2陀螺仪 420
18.2访问朝向和运动数据 422
18.2.1通过UIDevice请求朝向通知 422
18.2.2使用Core Motion读取加速计和陀螺仪数据 422
18.3检测朝向 424
18.3.1实现概述 424
18.3.2创建项目 424
18.3.3设计界面 425
18.3.4创建并连接输出口 425
18.3.5实现应用程序逻辑 426
18.3.6生成应用程序 427
18.4检测倾斜和旋转 428
18.4.1实现概述 428
18.4.2创建项目 428
18.4.3设计界面 429
18.4.4创建并连接输出口和操作 430
18.4.5实现应用程序逻辑 431
18.4.6生成应用程序 436
18.5进一步探索 437
18.6小结 437
18.7作业 438
18.7.1测验 438
18.7.2答案 438
18.7.3练习 438
第19章 使用多媒体 439
19.1探索多媒体 439
19.1.1 Media Player框架 440
19.1.2 AV Foundation框架 445
19.1.3图像选择器 447
19.1.4 Core Image框架 450
19.2创建用于练习使用多媒体的应用程序 451
19.2.1实现概述 451
19.2.2创建项目 451
19.2.3设计界面 453
19.2.4创建并连接输出口和操作 454
19.2.5实现电影播放器 455
19.2.6实现音频录制和播放 458
19.2.7使用照片库和相机 464
19.2.8实现Core Image滤镜 466
19.2.9访问并播放音乐库 468
19.3进一步探索 474
19.4小结 475
19.5问与答 475
19.6作业 475
19.6.1测验 475
19.6.2答案 476
19.6.3练习 476
第20章 与其他应用程序交互 477
20.1应用程序集成 477
20.1.1地址簿 477
20.1.2电子邮件 481
20.1.3使用Twitter发送推特信息 483
20.1.4地图功能 484
20.2使用地址簿、电子邮件、 Twitter和地图 487
20.2.1实现概述 487
20.2.2创建项目 487
20.2.3设计界面 488
20.2.4创建并连接输出口和操作 489
20.2.5实现地址簿逻辑 490
20.2.6实现地图逻辑 494
20.2.7实现电子邮件逻辑 497
20.2.8实现Twitter逻辑 499
20.2.9生成应用程序 500
20.3进一步探索 500
20.4小结 501
20.5问与答 501
20.6作业 501
20.6.1测验 501
20.6.2答案 501
20.6.3练习 501
第21章 实现定位服务 502
21.1理解Core Location 502
21.2创建支持定位的应用程序 508
21.2.1实现概述 508
21.2.2创建项目 508
21.2.3设计视图 509
21.2.4创建并连接输出口 510
21.2.5实现应用程序逻辑 511
21.2.6生成应用程序 514
21.3理解磁性指南针 515
21.3.1实现概述 515
21.3.2创建项目 515
21.3.3修改用户界面 516
21.3.4创建并连接输出口 517
21.3.5修改应用程序逻辑 517
21.3.6生成应用程序 521
21.4进一步探索 522
21.5小结 522
21.6问与答 522
21.7作业 523
21.7.1测验 523
21.7.2答案 523
21.7.3练习 523
第22章 创建支持后台处理的应用程序 524
22.1理解iOS后台处理 524
22.1.1后台处理类型 525
22.1.2支持后台处理的应用程序的生命周期 526
22.2禁用后台处理 528
22.3处理后台挂起 528
22.4实现本地通知 529
22.4.1常用的通知属性 530
22.4.2创建和调度通知 530
22.5使用任务特定的后台处理 532
22.5.1修改应用程序Cupertion以支持在后台播放音频 532
22.5.2使用声音指示前往库珀蒂诺的方向 534
22.5.3添加后台模式键 537
22.6完成长时间运行的后台任务 537
22.6.1实现概述 538
22.6.2创建项目 538
22.6.3设计界面 538
22.6.4创建并连接输出口 539
22.6.5实现应用程序逻辑 539
22.6.6启用后台任务处理 541
22.6.7生成应用程序 542
22.7进一步探索 542
22.8小结 543
22.9问与答 543
22.10作业 543
22.10.1测验 543
22.10.2答案 543
22.10.3练习 543
第23章 创建通用应用程序 544
23.1开发通用应用程序 544
23.1.1理解通用模板 545
23.1.2通用应用程序设置方面的不同 546
23.2创建通用应用程序:方法1 547
23.2.1实现概述 548
23.2.2创建项目 548
23.2.3设计界面 548
23.2.4创建并连接输出口 549
23.2.5实现应用程序逻辑 550
23.2.6生成应用程序 550
23.3创建通用应用程序:方法2 551
23.3.1创建项目 551
23.3.2设计界面 553
23.3.3创建并连接输出口 553
23.3.4实现应用程序逻辑 554
23.3.5生成应用程序 554
23.4使用多个目标 554
23.4.1将iPhone目标转换为iPad目标 555
23.4.2将iPad目标转换为iPhone目标 555
23.5进一步探索 556
23.6小结 556
23.7问与答 557
23.8作业 557
23.8.1测验 557
23.8.2答案 557
23.8.3练习 557
第24章 应用程序跟踪和调试 558
24.1使用NSLog提供即时反馈 558
24.2使用Xcode调试器 560
24.2.1设置断点及单步执行代码 562
24.2.2使用调试导航器 570
24.3进一步探索 571
24.4小结 571
24.5问与答 572
24.6作业 572
24.6.1测验 572
24.6.2答案 572
24.6.3练习 572