目 录
第1章 初识iOS开发 1
1.1 iPhone/iPad 手机应用 1
1.2 iOS5 操作系统 2
1.3 安装Xcode 2
1.4 编写第一个iOS 应用 6
1.4.1 创建一个新Xcode 项目 6
1.4.2 在iPhone模拟器上运行第一个应用程序 9
1.5 熟悉Xcode 界面 10
1.5.1 导航窗格 11
1.5.2 工具窗格 12
1.5.3 编辑窗格 13
1.5.4 目标窗格 13
1.6 Xcode 项目结构 14
1.7 nib 编辑界面16
1.7.1 界面的组成 16
1.7.2 设计用户界面 17
1.8 应用启动过程 21
1.9 Xcode 帮助文档 21
第2章 Objective-C语言基础 24
2.1 Objective-C 程序结构 24
2.1.1 接口和实现文件 24
2.1.2 编译器 28
2.2 面向对象的编程 28
2.2.1 类和实例 29
2.2.2 消息和方法 30
2.2.3 实例变量 33
2.2.4 创建实例的三种方法 34
2.3 数 据 类 型36
2.3.1 常见数据类型 36
2.3.2 字符串 36
2.3.3 结构体 36
2.3.4 id 类型 37
2.3.5 BOOL 40
2.3.6 SEL 41
2.3.7 Class 43
2.3.8 nil和Nil 44
2.3.9 指针 46
2.3.10 数组 47
2.4 操作符和控制语句 48
2.5 输入和输出数据 49
2.6 block 50
第3章 Objective-C类52
3.1 类的通用格式 52
3.2 声明对象和对象初始化 56
3.3 变量 58
3.3.1 局部变量、全局变量和实例变量 58
3.3.2 理解static 60
3.3.3 变量的存储类别 61
3.4 @property 和 @synthesize63
3.5 多输入参数的方法 65
3.6 异常处理 67
3.7 线程 70
3.7.1 线程创建与启动 71
3.7.2 线程同步 71
3.7.3 线程间通信 72
3.8 Singleton 73
3.9 基础框架类 74
3.9.1 NSString 74
3.9.2 NSDate 76
3.9.3 NSNumber 76
3.9.4 NSData 77
3.9.5 NSArray 和NSMutableArray 78
3.9.6 NSSet 78
3.9.7 NSDictionary 和NSMutableDictionary 78
3.9.8 属性列表 80
3.9.9 NSObject 探究 81
3.10 存取器 81
第4章 继承和协议 83
4.1 继承 83
4.2 方法重写 86
4.3 方法重载 87
4.4 多态和super 89
4.5 抽象类 93
4.6 动态方法调用 94
4.7 访问控制 96
4.8 类别 99
4.9 协议101
4.10 可选的方法104
第5章 内存管理和ARC 106
5.1 内存管理的基本原理106
5.2 ARC 107
第6章 iOS开发模式110
6.1 MVC 110
6.1.1 视图 111
6.1.2 视图控制器 112
6.2 目标-操作模式113
6.2.1 操作 113
6.2.2 应答器链 114
6.2.3 应用生命周期的事件 115
6.3 通知115
6.4 委托117
6.5 数据源117
6.6 Key-Value Observing 118
第7章 视图和绘图120
7.1 视图的基本概念120
7.1.1 窗口 123
7.1.2 子视图和超视图 123
7.1.3 框架 125
7.1.4 边界和中心 126
7.2 布局129
7.3 变换131
7.4 可见性和不透明度134
7.5 绘图和图像135
7.5.1 UIImage 和UIImageView 135
7.5.2 UIImage 和图形上下文 137
7.5.3 CGImage 139
7.5.4 drawRect 方法实现 141
7.5.5 图形上下文的状态 143
7.5.6 路径 143
7.5.7 颜色和模型 146
7.5.8 图形上下文变换 147
7.5.9 阴影 149
7.6 点和像素149
7.7 内容模式150
第8章 视图控制器和模态视图152
8.1 应用界面结构154
8.2 创建一个视图控制器155
8.2.1 代码创建视图控制器和视图 156
8.2.2 在nib中创建视图控制器 159
8.2.3 在nib中实例化视图控制器 159
8.3 旋转视图160
8.3.1 初始化方位 161
8.3.2 旋转事件 162
8.4 创建视图控制器实例163
8.4.1 创建视图控制器 164
8.4.2 视图控制器中的视图 164
8.4.3 视图控制器生命周期 165
8.4.4 支持旋转手机功能 165
8.5 模态视图167
8.5.1 模态视图的配置 167
8.5.2 模态视图的呈现 168
8.5.3 模态视图的关闭 169
第9章 导航控制器和标签栏控制器171
9.1 导航控制器172
9.1.1 导航控制器的组成 172
9.1.2 配置一个导航界面 173
9.1.3 配置导航视图控制器 177
9.1.4 视图控制器的事件 179
9.2 创建导航控制器实例179
9.2.1 在两个页之间导航实例 179
9.2.2 在两个页之间传递数据 187
9.2.3 定制返回按钮 190
9.2.4 在导航控制栏上添加系统按钮和左右按钮 191
9.3 标签栏控制器193
9.3.1 标签栏条目的图像 194
9.3.2 配置一个标签栏控制器 195
9.4 标签栏控制器实例196
9.4.1 创建标签栏控制器 197
9.4.2 UITabBarItem 200
第10章 滚动视图和表视图204
10.1 滚动视图 204
10.1.1 创建一个滚动视图 206
10.1.2 滚动视图的属性 209
10.1.3 分页显示 210
10.1.4 放大和缩小 211
10.1.5 滚动视图的委托 214
10.1.6 滚动视图的触摸 215
10.2 滚动视图实例218
10.3 表视图224
10.3.1 表视图类型 225
10.3.2 UITableViewDataSource 227
10.3.3 表单元基础 230
10.3.4 定制表单元 236
10.3.5 选中某一行后的处理 242
10.3.6 UITableViewController 245
10.3.7 表视图的滚动和搜索 246
10.3.8 表视图的编辑功能 251
10.4 表视图实例257
第11章 iPad应用和拆分视图266
11.1 拆分视图控制器268
11.1.1 拆分视图例子 268
11.1.2 理解拆分视图代码 272
11.2 团购应用实例278
11.3 从导航控制器迁移到拆分视图286
11.3.1 基于导航控制器的iPhone应用 287
11.3.2 转化为iPad 应用 292
11.4 popover 297
11.4.1 显示一个popover 297
11.4.2 关闭popover 299
11.4.3 popover 和表视图实例 299
11.4.4 基于样本数据和滑动条的popover 实例 305
11.4.5 手势和popover 的结合编程 311
11.5 拆分视图和popover 315
11.6 模态视图和popover 315
第12章 视图上的控件322
12.1 文本控件 322
12.1.1 UILabel 323
12.1.2 UITextField 324
12.1.3 UITextView 326
12.2 键盘操作 327
12.2.1 定制快捷键 328
12.2.2 在标准键盘上添加自己的键 330
12.2.3 键盘通知 331
12.3 核心文本 334
12.4 网页视图 338
12.4.1 UIWebView 338
12.4.2 网页视图实例 341
12.4.3 loadHTMLString方法 346
12.5 其他控件和视图347
12.5.1 UIActivityIndicatorView 347
12.5.2 UIProgressView 349
12.5.3 UIPickerView 350
12.5.4 UISearchBar 352
12.5.5 UIControl 353
12.5.6 UISwitch 和UIPageControl 354
12.5.7 UIDatePicker 355
12.5.8 UISlider 和UISegmentedControl 356
12.5.9 UIButton 358
12.5.10 导航栏、工具栏和标签栏 359
12.6 模态对话框364
12.6.1 警告视图 365
12.6.2 操作单 366
12.6.3 本地通知 367
第13章 音频和视频编程370
13.1 音频API370
13.1.1 系统声音API 370
13.1.2 声音会话 372
13.1.3 声音播放器 373
13.1.4 录音 375
13.1.5 访问资料库中的音乐 375
13.1.6 其他API 382
13.2 音频操作实例382
13.3 视频387
13.4 UIVideoEditorController391
13.5 视频实例 392
13.6 播放列表和多视频播放395
13.7 流播放400
13.7.1 两种网络播放模式 400
13.7.2 HLS原理 401
13.7.3 流播放实例 402
13.8 在视频上叠加自己的内容404
第14章 照片和网络编程410
14.1 照片编程 410
14.1.1 复制照片到iPhone模拟器 410
14.1.2 从相册中读取照片 411
14.1.3 保存照片到相册 419
14.1.4 使用照相机 419
14.1.5 Assets Library 框架 421
14.2 网络编程 423
第15章 GPS、地图、日历和通讯录编程427
15.1 位置类428
15.1.1 CLLocation 428
15.1.2 CLLocationManager 428
15.1.3 位置类例子 431
15.2 地 图433
15.2.1 MapKit 框架 433
15.2.2 MKMapView 433
15.2.3 MKPlacemark、MKUserLocation 和MKReverseGeocoder 436
15.2.4 显示地图 436
15.2.5 在地图上标记位置 442
15.2.6 根据位置找到地址信息 443
15.2.7 获取当前位置 444
15.2.8 标注 445
15.2.9 覆盖图 449
15.3 日历451
15.3.1 日历数据库 451
15.3.2 日历界面 455
15.4 通讯录457
15.4.1 选择通讯录上的联系人 459
15.4.2 ABPeoplePickerNavigationController 使用实例 463
15.4.3 使用presentModalViewController 弹出和关闭视图 466
15.4.4 查询并更新通讯录上的联系人 466
15.4.5 显示和编辑一个联系人信息 467
15.4.6 添加新联系人 469
15.4.7 查询和更新通讯录实例 471
第16章 图层478
16.1 视图和图层479
16.2 图层和子图层479
16.2.1 操纵图层层次结构 481
16.2.2 定位子图层 481
16.2.3 CAScrollLayer 482
16.2.4 子图层的布局 482
16.3 在一个图层中绘制482
16.3.1 内容的重设大小和重定位 483
16.3.2 自绘图的图层 485
16.4 变换486
16.4.1 深度 488
16.4.2 变换和键-值码 490
16.4.3 阴影、边界以及更多信息 490
16.4.4 图层和键-值码 491
第17章 动画492
17.1 动画概述 492
17.2 UIImageView 动画493
17.3 视图动画 494
17.3.1 动画块 494
17.3.2 修改动画块 495
17.3.3 过渡动画 497
17.3.4 基于块的视图动画 499
17.4 隐式动画 501
17.4.1 动画事务 501
17.4.2 媒体定时函数 502
17.5 核心动画 503
17.5.1 CABasicAnimation 和它的继承 503
17.5.2 使用CABasicAnimation 504
17.5.3 关键帧动画 506
17.5.4 自定义属性的动画显示 507
17.5.5 分组的动画 508
17.5.6 过渡 511
17.5.7 动画列表 512
17.6 操作513
17.6.1 操作的含义 513
17.6.2 操作搜索 513
17.6.3 深入到操作搜索 514
17.6.4 非属性操作 516
第18章 触摸和手势编程518
18.1 触摸518
18.1.1 触摸事件和视图 519
18.1.2 接收触摸 519
18.1.3 限制触摸 521
18.1.4 解释触摸 521
18.2 手势识别器525
18.2.1 手势识别器类 529
18.2.2 多手势识别器 532
18.2.3 给手势识别器添加子类 533
18.2.4 手势识别器委托 534
18.3 触摸的发送535
18.3.1 命中测试 536
18.3.2 初始的触摸事件发送 538
18.3.3 手势识别器和视图 539
18.3.4 识别 539
18.3.5 触摸和响应链 539
18.4 手势识别器实例540
18.4.1 轻击手势编程 540
18.4.2 多次触摸和响应者链 543
18.4.3 轻扫手势编程 546
18.4.4 离散和连续手势 549
18.4.5 创建自定义手势 551
18.4.6 添加声音 556
18.4.7 手势识别的优先顺序 559
18.4.8 长按手势 560
第19章 游戏和设备间通信565
19.1 转动或晃动手机565
19.1.1 晃动事件 566
19.1.2 UIAccelerometer 567
19.1.3 Core Motion 569
19.2 设备之间通信569
19.2.1 Bonjour 570
19.2.3 GameKit 572
19.2.4 GKSession 573
19.2.5 GKPeerPickerController 和设备选择器 577
19.2.6 GameKit 实例 578
第20章 iOS数据的存储和读取584
20.1 文件操作 584
20.1.1 保存和读取文件 585
20.1.2 文件共享和文件类型 586
20.1.3 传递一个文档 588
20.2 用户默认 591
20.3 XML591
20.4 SQLite596
20.5 核心数据 597
20.6 图形文件 607
20.7 互联网数据609
20.7.1 XML 和JSON 609
20.7.2 调用云服务的手机应用的架构 618
第21章 高级内容621
21.1 电子邮件和短消息621
21.2 苹果推服务622
21.3 多线程623
21.3.1 NSThread 625
21.3.2 NSOperation 和NSOperationQueue 626
21.3.3 NSOperation 实例 628
21.3.4 GCD 632
21.4 本地化635
21.5 Xcode 调试器636
21.6 静态分析器642
21.7 版本控制 643
21.8 Instruments 644
21.9 发布应用程序647
21.10 iCloud 编程647
21.10.1 让你的应用支持iCloud 648
21.10.2 iCloud API总览 652
21.10.3 写UIDocument 的子类 654
21.10.4 打开一个iCloud文件 654
21.11 ARC 应用实例660
21.11.1 使用Xcode 自带的转换器 663
21.11.2 ARC手动转换 674
21.11.3 委托和弱指针属性 680