第1章 第一个简单的iOS应用 1
1.1创建Xcode项目 2
1.2创建界面 5
1.3模型-视图-控制器 10
1.4声明 13
声明实例变量 13
声明方法 14
1.5创建关联 15
设置指针 15
设置目标(target)和动作(action) 17
关联小结 19
1.6实现方法 20
1.7用模拟器构建并运行应用 21
1.8安装应用 23
1.9应用图标 24
1.10启动图片 27
第2章Objective-C 31
2.1对象 31
2.2使用实例 32
创建对象 32
发送消息 33
释放对象 34
2.3编写命令行工具RandomPossessions 35
NSString 38
NSArray与NSMutableArray 39
2.4子类化Objective-C类 40
实例变量 44
存取方法 45
实例方法 48
初始化方法 49
其他初始化方法与初始化方法链 52
类方法 53
测试子类 55
2.5异常与控制台窗口 56
2.6快速枚举 57
2.7练习 58
第3章 内存管理 59
3.1内存管理基础 59
C语言的内存管理 59
通过对象管理内存 61
3.2引用计数 61
使用retain计数 61
使用autorelease 64
存取方法和内存管理 67
实现dealloc 69
通过属性机制简化存取方法 70
copy和mutableCopy 72
Retain计数规则 73
3.3深入学习:再谈内存管理 74
第4章 委托机制与Core Location 77
4.1项目、目标和框架 77
4.2 Core Location 79
通过 CLLocationManager获取更新数据 81
4.3委托机制 82
协议 83
委托机制、控制器对象和内存管理 85
4.4使用调试器 86
4.5练习:方位 91
4.6深入学习:构建阶段、编译器错误和连接器错误 91
预处理(Preprocessing) 92
编译 93
连接 94
第5章MapKit与文本输入 97
5.1对象图 97
5.2 MapKit框架 99
5.3界面属性 99
5.4设置MapView对象的委托对象 102
使用文档 103
创建MKAnnotation子类 108
标记位置 112
完成Whereami 113
5.5练习:扩充标注 114
5.6练习:根据地理位置获取城市信息 114
第6章 创建UIView子类 115
6.1创建自定义视图 116
drawRect:方法 116
创建UIView实例 118
6.2绘制文字和阴影 120
6.3使用UIScrollView 121
6.4实现缩放功能 122
6.5隐藏状态条 123
6.6练习:颜色 125
6.7深入学习:Retain循环 125
6.8深入学习:重画视图 125
第7章 视图控制对象 127
7.1视图控制对象与XIB文件 127
7.2使用视图控制对象 129
创建UITabBarController对象 130
创建视图控制对象和标签项 131
为视图控制对象创建视图 135
7.3视图的显示和消失 142
7.4视图控制对象的生命周期与内存过低警告 142
7.5 UIViewController子类与模板 146
7.6练习:地图标签 147
第8章 方向感应器 149
8.1设置方向感应器 149
8.2获取方向感应器数据 151
8.3加速方向与加速数值 151
8.4使用加速感应器数据 151
8.5使加速感应器数据更“平滑” 152
8.6侦测摇动 153
8.7练习:改变颜色 155
8.8深入学习:滤波与频率 155
8.9深入学习:Retina显示屏 156
第9章 通告机制与设备转动 159
9.1通告中心 159
9.2 UIDevice通告 160
9.3自动转屏 161
用代码设置自动缩放掩码与按位运算符 167
9.4强制使用横排模式 169
9.5练习:设备近身通告 170
9.6深入学习:覆盖自动转屏 170
第10章UITabIeView与UITableViewController 171
10.1编写Homepwner应用 171
10.2 UITableViewController 172
创建UITableViewController子类 173
10.3 UITableView数据源 176
PossessionStore:单实例对象 177
实现数据源方法 180
10.4 UITableViewCell对象 182
创建并获取UITableViewCell对象 183
重用UITableViewCell对象 185
10.5代码片段库 186
10.6练习:表格段 189
第11章 编辑UITabIeView 191
11.1编辑模式 191
11.2增加行 197
11.3删除行 198
11.4移动行 199
第12章UINavigationController 203
12.1 UINavigationController 204
UINavigationBar 207
12.2加入额外的UIViewController 211
12.3 UINavigationController的导航功能 217
将视图控制对象压入栈 217
视图控制对象之间的数据传递 219
视图的显示和消失 221
12.4练习:数字键盘(Number Pad) 221
第 13章 相机 223
13.1通过UIImageView显示图片 223
通过UIImagePickerController拍摄照片 226
ImageStore 231
创建并使用键 234
隐藏键盘 237
13.2练习:删除图片 238
13.3深入学习:摄像 238
第14章UIPopoverController与模态视图控制对象 241
14.1将Homepwner改写为通用应用 242
14.2 UIPopoverController 244
14.3模态视图控制对象 246
关闭模态视图控制对象 249
模态视图控制对象的样式 250
编写视图控制对象的委托协议 252
模态视图控制对象的过渡动画 254
第15章 保存、读取与多任务处理 257
15.1应用沙盒 257
获取文件路径 258
15.2固化 260
对象的固化 260
对象的解固 262
15.3应用状态、状态切换与多任务处理 265
15.4通过NSData保存数据 269
15.5再谈内存过低警告 271
15.6模型-视图-控制器-存储设计模式 272
15.7练习:为Whereami增加固化功能 272
15.8深入学习:应用状态的切换 272
15.9深入学习:文件系统的读取和写入 273
15.10深入学习:程序包 276
第16章 创建UITableViewCell子类 279
16.1创建HomepwnerItemCell 280
创建子视图 281
子视图的布局 282
使用UITableViewCell子类对象 283
16.2处理图片 284
16.3练习:辅助指示视图 289
16.4练习:缩小原图 289
第17章Core Data 291
17.1对象-关系映射 291
17.2用Core Data重写PossessionStore的数据保存功能 291
模型文件 292
NSManagedObject与NSManagedObject子类 297
更新PossessionStore 301
为Homepwner增加AssetType功能 307
17.3再谈SQL 311
17.4各种保存机制的优缺点 314
17.5练习:增加AssetType对象 315
17.6练习:AssetType对象的iPad界面 315
第18章 本地化 317
18.1通过NSLocale实现国际化 318
18.2资源的本地化 319
18.3 NSLocalizedString与字符串对照表 322
18.4练习:增加一套本地化资源 325
18.5深入学习:NSBundle在国际化中的作用 325
第19章 设置 327
19.1更新Whereami 327
19.2 NSUserDefaults 329
19.3深入学习:设置应用 331
第20章 触摸事件与UIResponder 333
20.1触摸事件 334
20.2创建TouchTracker应用 335
20.3处理触摸事件并创建线条对象 337
20.4响应对象链 340
20.5练习:保存和读取 341
20.6练习:圆圈 341
20.7深入学习:UIControl 341
第21章Instruments 343
21.1静态分析器 343
21.2 Instruments 345
Allocations组件 345
Time Profiler组件 353
21.3 Xcode方案 355
创建新方案 357
21.4构建设置 359
第22章Core Animation Layer 363
22.1层与视图的关系 363
22.2创建CALayer对象 364
22.3层的显示内容 367
22.4隐式可动画属性 369
22.5深入学习:通过代码生成显示内容 371
22.6深入学习:层、位图与上下文 372
22.7练习:动态生成层的显示内容 374
第23章 通过CAAnimation控制动画 375
23.1动画对象 375
23.2通过CABasicAnimation实现旋转动画 378
速度控制函数 381
动画结束后的处理 382
23.3通过CAKeyframeAnimation实现弹跳动画 383
23.4练习:更多动画效果 384
23.5深入学习:外观层和模型层 384
第24章Block对象与范畴 387
24.1为TouchDraw View上色 387
24.2 Block对象 389
Block对象与变量 389
捕获变量 393
通过其他内建的方法使用Block对象 396
通过Block对象保持代码的短小精练 396
24.3范畴 397
24.4深入学习:内存管理与Block对象 400
24.5深入学习:比较多种回调机制实现途径的优缺点 403
第25章Web服务与UIWebView 405
25.1 Web服务 406
编写Nerdfeed 407
从指定的URL获取数据 408
使用NSURLConnection 410
解析XML数据 412
日志输出技巧 423
25.2 UIWebView 424
25.3深入学习:NSXMLParser 426
25.4深入学习:HTTP请求主体 427
25.5深入学习:认证信息 429
25.6练习:解析并显示更多数据 430
25.7练习:加强UIWebView 430
第26章UISplitViewController 431
26.1在Nerdfeed中使用UISplitViewController 432
26.2主、从视图控制对象间的通信 436
26.3在竖排模式下显示主视图控制对象 442
26.4将Nerdfeed改写为通用应用 445
第27章 多媒体播放与后台运行 449
27.1创建MediaPlayer应用 449
27.2系统声音 452
注册系统声音 452
播放系统声音 453
27.3播放压缩格式的音频文件 454
27.4播放视频文件 455
MPMoviePlayerViewController 457
视频文件的预读 458
27.5后台运行 458
后台运行规则 459
其他形式的后台运行 460
27.6底层API 462
27.7练习:录音 462
第28章Bonjour与Web服务端 463
28.1 Bonjour 463
创建CocoaServer 464
发布Bonj our服务 467
通过Bonjour查找服务 469
28.2 HTTP通信 473
用Objective-C编写Web服务端 473
获取服务端的网络地址信息 474
字节序 475
创建服务请求 475
接收Web请求 477
28.3深入学习:TXTRecords 479
第29章 推送通知与网络编程 481
29.1设置客户端,为接收推送通知做准备 482
注册客户端 482
创建并设置针对推送通知的provisioning profile 483
29.2投递推送通知 486
向provider发送设备token 486
29.3发送推送通知 488
通过NSStream和Apple服务器创建网络连接 488
29.4几种额外的客户端通知处理机制 498
声音和图标标记 499
通过推送通知传送自定义数据 500
29.5正式的通知服务器以及其他发布事宜 502
29.6深入学习:反馈服务 502
第30章 后记 503
30.1接下来做什么 503
30.2结束语 503
索引 505