前言 1
第1章 基础 9
1.0概述 9
1.1使用Xcode创建一个简单的iOS应用 10
1.2了解界面构建器 13
1.3编译iOS应用程序 17
1.4在模拟器上运行iOS应用程序 19
1.5在iOS设备上运行iOS应用程序 20
1.6为分发而打包iOS应用程序 23
1.7在Objective-C中声明变量 27
1.8分配和使用字符串 30
1.9使用if语句来比较Objective-C中的值 34
1.10使用for语句来实现循环 37
1.11使用while循环 39
1.12自定义类 42
1.13定义类的功能 45
1.14定义两个或多个同名方法 50
1.15分配和初始化对象 53
1.16为类添加属性 55
1.17从手工引用计数转到自动引用计数 58
1.18使用自动引用计算来实现强制类型转换 63
1.19通过协议代理任务 66
1.20确定某个实例或类方法是否可用 72
1.21在运行时确定某个类是否可用 75
1.22分配与运用数字 76
1.23分配与运用数组 78
1.24分配与运用字典 83
1.25分配与运用集合 86
1.26创建包 88
1.27从主包中加载数据 90
1.28从其他包中加载数据 93
1.29使用NSNotificationCenter发送通知 96
1.30监听来自NSNotificationCenter的通知 99
第2章 实现控制器与视图 103
2.0概述 103
2.1使用UIAlertView显示警告 104
2.2使用UISwitch创建和使用切换开关 111
2.3定制UISwitch 115
2.4使用UIPickerView来选择值 119
2.5使用UIDatePicker来选择日期和时间 125
2.6使用UISlider来实现范围选择器 129
2.7自定义UISlider 133
2.8使用UISegmentedControl实现成组压缩选项 139
2.9自定义UISegmentedControl 143
2.10使用UIViewController来管理与展现视图 149
2.11使用UIActivityViewController弹出共享选项 154
2.12使用UINavigationController实现顶部导航栏 158
2.13操作导航控制器的视图控制器数组 163
2.14在导航栏上显示图像 164
2.15使用UIBarButtonItem来给导航栏添加按钮 165
2.16使用UITabBarController弹出多个视图控制器 172
2.17使用UILabel显示静态文本 179
2.18自定义标签 182
2.19使用UITextField接收用户的文本输入 185
2.20使用UITextView显示多行文本 192
2.21使用UIButton添加按钮到用户接口 197
2.22使用UIImageView显示图片 201
2.23使用UIScrollView创建可滚动内容 205
2.24使用UIWebView加载Web页 209
2.25使用UISplitViewController显示主/从视图 213
2.26使用UIPageViewController启用分页 219
2.27使用UIPopoverController显示悬浮窗口 224
2.28使用UIProgressView显示进度 232
2.29监听与响应键盘通知 234
2.30构建与显示格式化文本 246
第3章 自动布局与可视化格式语言 251
3.0概述 251
3.1在屏幕的中心放置UI组件 254
3.2使用可视化格式语言来定义水平和垂直约束 257
3.3使用交叉视图约束 263
3.4在界面构建器中配置自动布局约束 270
第4章 构建与使用表格视图 275
4.0概述 275
4.1实例化表格视图 275
4.2赋予表格视图事件处理器 277
4.3为表格视图填充数据 279
4.4接收与处理表格视图事件 282
4.5在表格视图单元格中使用不同类型的附件 284
4.6创建自定义的表格视图单元格附件 286
4.7在表格视图中显示层次化数据 289
4.8使能表格视图的单元格滑动删除 291
4.9在表格视图中构建表格头与脚 293
4.10在表格视图单元格上显示上下文菜单 300
4.11在表格视图中移动单元格与区段 305
4.12从表格视图中删除单元格与区段 310
4.13使用UITableViewController快捷创建表格视图 319
4.14显示表格视图的刷新控制 325
第5章 提要本 329
5.0概述 329
5.1创建一个带有提要本的项目 330
5.2在提要本中添加一个导航控制器 332
5.3从一个场景传递数据到另一个场景 341
5.4添加提要本到已有的项目 344
第6章 并发 347
6.0概述 347
6.1构建块对象 352
6.2在块对象中访问变量 356
6.3调用块对象 362
6.4分发任务到宏中心分发 363
6.5使用GCD执行与UI相关的任务 364
6.6使用GCD同步执行与UI无关的任务 368
6.7以GCD异步的方式来执行与UI无关的任务 371
6.8使用GCD延迟执行一个任务 376
6.9使用GCD来执行一次性任务 379
6.10使用GCD为任务成组 381
6.11使用GCD创建自己的分发队列 384
6.12使用操作来同步运行任务 387
6.13使用操作来异步运行任务 394
6.14创建操作之前的依赖关系 400
6.15创建定时器 402
6.16使用线程创建并发 407
6.17调用后台方法 411
6.18退出线程与定时器 413
第7章 内核定位与地图 416
7.0概述 416
7.1创建一个地图视图 418
7.2处理地图视图的事件 419
7.3设备精确定位 422
7.4在地图视图上显示指示 424
7.5在地图视图上显示不同颜色的指示 427
7.6在地图上显示自定义指示 433
7.7转换有意义的地址来获取经度与纬度 435
7.8将经度与纬度转换成有意义的地址 437
第8章 实现手势识别 439
8.0概述 439
8.1检测滑动手势 441
8.2旋转手势的应答 443
8.3检测拖动及拖拉手势 446
8.4检测长按手势 448
8.5响应单击手势 451
8.6响应挤捏手势 453
第9章 网络、JSON 、 XML和Twitter 456
9.0概述 456
9.1使用NSURLConnection实现异步下载 456
9.2在异步连接中处理超时 459
9.3使用NSURLConnection实现同步下载 460
9.4使用NSMutableURLRequest改变URL请求 463
9.5使用NSURLConnection发送Sending HTTP GET请求 463
9.6使用NSURLConnection发送HTTP POST请求 466
9.7使用NSURLConnection发送HTTP DELETE请求 468
9.8使用NSURLConnection发送HTTP PUT请求 471
9.9数组和字典的JSON序列化 473
9.10将JSON并行化为数组和字典 475
9.11将Twitter功能集成到应用程序 478
9.12使用NSXMLParser解析XML 483
第10章 音频和视频 489
10.0概述 489
10.1播放音频文件 489
10.2音频文件播放期间处理中断 491
10.3录制音频文件 492
10.4录制音频文件时处理中断 498
10.5在播放其他声音时播放音频 499
10.6播放视频文件 502
10.7从视频文件中捕捉缩略图 506
10.8访问音乐库 509
第11章 地址簿 516
11.0概述 516
11.1访问地址簿 518
11.2在地址簿中检索索引 521
11.3在地址簿中检索所有人 523
11.4检索地址簿条目属性 525
11.5在用户地址簿中插入联系人条目 529
11.6在地址簿数据库中插入组条目 532
11.7将联系人加入到联系组中 535
11.8从地址簿中查询 538
11.9检索和设置联系人地址簿图片 542
第12章 文件和文件夹管理 549
12.0概述 549
12.1在磁盘上找到最有用文件夹的路径 551
12.2写入和读取文件 553
12.3在磁盘上创建文件夹 557
12.4枚举文件和文件夹 559
12.5删除文件和文件夹 564
12.6磁盘上文件的安全 567
12.7将对象保存到文件 572
第13章 摄像头和照片库 576
13.0概述 576
13.1检测与观察摄像头 578
13.2使用摄像头拍照 583
13.3用摄像头拍摄视频 586
13.4在照片库中存储照片 589
13.5在照片库中存储视频 592
13.6从照片库中检索照片和视频 594
13.7从资源库中检索资源 595
13.8在iOS设备上编辑视频 602
第14章 多任务 607
14.0概述 607
14.1检测多任务的可用性 608
14.2在后台完成一个长时间运行的任务 609
14.3在后台接收本地通知 612
14.4在后台播放音频 619
14.5在后台处理位置变化 621
14.6多任务iOS应用程序状态的保存与加载 624
14.7在后台处理网络连接 627
14.8处理发送给唤醒应用程序的通知 630
14.9响应应用设置变化 632
14.10选择退出多任务 634
第15章 核心数据 636
15.0概述 636
15.1使用Xcode创建Core Data模型 639
15.2为核心数据实体生成类 643
15.3使用Core Data创建和保存数据 645
15.4从核心数据中读数据 647
15.5从核心数据中删除数据 649
15.6对核心数据中的数据排序 652
15.7加速表视图中数据的访问 654
15.8在Core Data中实现联系 664
第16章 日期、日历和事件 671
16.0概述 671
16.1检索日历列表 674
16.2向日历中添加事件 676
16.3读取日历内容 680
16.4从日历中删除事件 683
16.5向日历中添加重复出现的事件 688
16.6检索事件的参加者 692
16.7在日历中添加闹铃 696
16.8处理事件的更改通知 698
16.9显示事件视图控制器 701
16.10显示事件编辑视图控制器 705
第17章 图形和动画 708
17.0概述 708
17.1枚举和加载字体 715
17.2绘制文本 718
17.3构造、设置和使用颜色 719
17.4绘制图像 724
17.5构建可调大小的图像 728
17.6画线 733
17.7构造路径 739
17.8绘制矩形 742
17.9为轮廓添加阴影 745
17.10绘制渐变色 751
17.11移动绘图环境上的图形 757
17.12在绘图环境上缩放图形 761
17.13在绘图环境上旋转图形 763
17.14动态移动视图 764
17.15动态缩放视图 772
17.16动态旋转视图 774
第18章 核心运动 776
18.0概述 776
18.1检测加速器是否可用 777
18.2检测陀螺仪的可用性 779
18.3检索加速器数据 781
18.4检测iOS设备上的振动 784
18.5检索陀螺仪数据 787
第19章 iCloud 790
19.0概述 790
19.1为应用设置iCloud 791
19.2在iCloud中存储并同步字典 796
19.3在iCloud中为应用程序创建并管理文件夹 800
19.4在iCloud中查找文件和文件夹 805
19.5在iCloud中存储用户文档 815
19.6管理云中文档的状态 828
19.7处理iCloud文档中的冲突 831
第20章 Pass Kit 841
20.0概述 841
20.1创建Pass Kit证书 844
20.2创建通行文件 849
20.3为通行证提供图标和图片 860
20.4为数字签名准备通行证 861
20.5通行证数字签名 863
20.6使用电子邮件分发通行证 868
20.7用Web服务器分发通行证 871
20.8使iOS应用能够访问iOS设备上的通行证 873
20.9与Passbook有计划地交互 877