第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和@synthesize 63
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音频API 370
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 UIVideoEditorController 391
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 XML 591
20.4 SQLite 596
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.104打开一个iCloud文件 654
21.11 ARC应用实例 660
21.11.1使用Xcode自带的转换器 663
21.11.2 ARC手动转换 674
21.11.3委托和弱指针属性 680