第1章 第一个简单的iOS应用 1
1.1创建Xcode项目 2
1.2创建界面 5
1.3模型-视图-控制器 9
1.4声明 11
1.5创建关联 13
1.6实现方法 17
1.7针对模拟器构建并运行应用 20
1.8安装应用 22
1.9应用图标 23
1.10启动图片 25
第2章Objective-C 29
2.1对象 29
2.2使用实例 30
2.3编写命令行工具RandomPossessions 33
2.4创建Objective-C类的子类 39
2.5异常与未知选择器 56
2.6快速枚举 58
2.7练习 58
2.8初级练习:查找问题 59
2.9中级练习:另一个初始化方法 59
2.10高级练习:另一个类 59
2.11关于深入学习部分 59
2.12深入学习:如何为类命名 60
第3章 通过ARC管理内存 61
3.1堆 61
3.2栈 62
3.3指针变量与对象所有权 63
3.4内存管理 64
3.5强引用与弱引用 67
3.6属性 72
3.7 copy特性 77
3.8用点号调用存取方法 78
3.9深入学习:Autorelease池与ARC历史 78
第4章 委托与Core Location 81
4.1项目、目标与框架 82
4.2 Core Location 83
4.3委托 87
4.4使用调试器 91
4.5初级练习:距离过滤 97
4.6中级练习:获取方位信息 98
4.7深入学习:构建阶段、编译器错误和连接器错误 98
第5章MapKit与文本输入 103
5.1对象图 103
5.2 MapKit框架 104
5.3界面属性 105
5.4设置MapView对象的委托对象 108
5.5初级练习:地图类型 120
5.6中级练习:修改地图类型 120
5.7高级练习:扩充标注 120
第6章UIView子类与UIScrollView 121
6.1视图与视图层次结构 122
6.2创建自定义视图 124
6.3 UIView的drawRect:方法 128
6.4 Core Graphics 131
6.5 UIKit中的绘图扩展 132
6.6重画视图 134
6.7运动事件 136
6.8使用UIScrollView 138
6.9隐藏状态条 142
6.10初级练习:颜色 143
6.11中级练习:图形 144
6.12高级练习:另一个视图与曲线 144
第7章 视图控制对象 145
7.1 UIViewController 145
7.2 UITabBarController 155
7.3视图控制对象的生命周期 159
7.4 UIViewController子类与模板 168
7.5初级练习:增加一个标签项 168
7.6中级练习:控制逻辑 168
7.7深入学习:main函数与UIApplication 169
7.8深入学习:Retina显示屏 169
第8章 通告机制与自动转屏 173
8.1通告中心 173
8.2 UIDevice通告 175
8.3自动转屏 176
8.4强制使用横排模式 184
8.5初级练习:设备近身通告 185
8.6中级练习:编写代码设置自动缩放掩码 185
8.7高级练习:覆盖自动转屏 185
8.8深入学习:覆盖自动转屏 185
第9章UITableView与UITableViewController 187
9.1编写Homepwner应用 187
9.2 UITableViewController 189
9.3 UITableView数据源 192
9.4 UITableViewCell对象 198
9.5代码片段库 203
9.6初级练习:表格段 205
9.7中级练习:固定行 205
9.8高级练习:修改UITableView对象的外观 206
第10章 编辑UITableView 207
10.1编辑模式 207
10.2增加行 213
10.3删除行 215
10.4移动行 216
10.5初级练习:更改“删除”按钮的标题 218
10.6中级练习:禁止移动某个表格行 218
10.7高级练习:彻底禁止移动某个表格行 218
第11章UINavigationController 219
11.1 UINavigationController对象 219
11.2额外的视图控制对象 223
11.3 UINavigationController的导航功能 228
11.4 UINavigationBar 233
11.5初级练习:显示数字键盘 238
11.6中级练习:关闭数字键盘 238
11.7高级练习:压入更多视图控制对象 238
第12章 相机 239
12.1通过UIImageView对象显示图片 239
12.2初级练习:编辑图片 257
12.3中级练习:删除图片 257
12.4高级练习:Camera Overlay 257
12.5深入学习:摄像 257
第13章UIPopoverController与模态视图控制对象 261
13.1将Homepwner改为通用应用 261
13.2 UIPopoverController 263
13.3更多的模态视图控制对象 266
13.4初级练习:将Whereami改为通用应用 274
13.5中级练习:使用不同的动画效果 275
13.6高级练习:UIPopoverController对象的外观 275
13.7深入学习:视图控制对象之间的关系 275
第14章 保存、读取与应用状态 279
14.1固化 279
14.2应用沙盒 281
14.3 NSKeyedArchiver与NSKeyedUnarchiver 283
14.4应用状态与状态切换 286
14.5通过NSData将数据写入文件 289
14.6再谈内存过低警告 291
14.7模型-视图-控制器-存储设计模式 292
14.8初级练习:PNG 293
14.9中级练习:为Whereami增加固化功能 293
14.10深入学习:应用的状态切换 293
14.11深入学习:文件系统的读取和写入 295
14.12深入学习:应用程序包 297
第15章 创建UITableViewCell子类 299
15.1创建HomepwnerltemCell 299
15.2处理图片 305
15.3由UITableViewCell对象转发动作消息 308
15.4初级练习:设置颜色 316
15.5中级练习:UITableViewCell子类的基类 316
15.6高级练习:缩放 316
第16章Core Data 317
16.1对象-关系映射 317
16.2用Core Data重写BNRItemStore的数据保存功能 318
16.3再谈SQL 336
16.4 Faults 337
16.5各种存取机制的优缺点 339
16.6初级练习:AssetTypePicker对象的iPad界面 339
16.7中级练习:增加BNRAssetType对象 339
16.8高级练习:显示某种类型的BNRItem实例 340
第17章 本地化 341
17.1通过NSLocale实施国际化 342
17.2资源的本地化 343
17.3 NSLocalizedString与字符串对照表 347
17.4初级练习:增加一套本地化资源 349
17.5深入学习:NSBundle在国际化过程中的作用 349
第18章NSUserDefaults 351
18.1更新Whereami 351
18.2使用NSUserDefaults 353
18.3中级练习:初始坐标 355
18.4高级练习:简化坐标的存储 356
18.5深入学习:“设置” 356
第19章 触摸事件与UIResponder 357
19.1触摸事件 357
19.2创建TouchTracker应用 359
19.3实现TouchDrawView,完成绘图功能 360
19.4处理触摸事件并创建线条对象 361
19.5响应对象链 364
19.6初级练习:保存与读取 365
19.7中级练习:颜色 365
19.8高级练习:圆圈 365
19.9深入学习:UIControl 365
第20章UIGestureRecognizer与UIMenuController 367
20.1 UIGestureRecognizer子类 367
20.2用UITapGestureRecognizer对象识别“按下”手势 368
20.3 UIMenuController 371
20.4 UILongPressGestureRecognizer 372
20.5 UIPanGestureRecognizer以及同时识别多个手势 374
20.6 深入学习:UIMenuController与UIResponderStandardEditActions 376
20.7深入学习:再谈UIGestureRecognizer 377
20.8初级练习:清空线条 378
20.9中级练习:修正错误 379
20.10高级练习:速度与宽度 379
20.11高级练习:颜色 379
第21章Instruments 380
21.1静态分析器 380
21.2 Instruments 382
21.3 Xcode方案 392
21.4创建新方案 394
21.5构建设置 396
第22章Core Animation Layer 399
22.1层与视图的关系 399
22.2创建CALayer对象 400
22.3层的显示内容 403
22.4隐式可动画属性 405
22.5初级练习:增加一个CALayer对象 407
22.6中级练习:圆角 407
22.7高级练习:阴影 407
22.8深入学习:通过代码生成显示内容 407
22.9深入学习:层、位图与上下文 408
第23章 通过CAAnimation控制动画 411
23.1动画对象 411
23.2通过CABasicAnimation实现旋转动画 414
23.3通过CAKeyframeAnimation实现弹跳动画 419
23.4初级练习:增加一个动画效果 420
23.5中级练习:再增加一个动画效果 420
23.6高级练习:串联动画 421
23.7深入学习:外观层和模型层 421
第24章UIStoryboard 423
24.1创建Storyboard文件 423
24.2 Storyboard文件中的UITable View Controller 427
24.3 Segue 430
24.4 Storyboards的优缺点 434
第25章Web服务与UIWebView 437
25.1 Web服务 438
25.2 UIWebView 456
25.3深入学习:NSXMLParser 458
25.4深入学习:HTTP请求主体 459
25.5深入学习:认证信息 461
25.6初级练习:解析并显示更多数据 462
25.7中级练习:加强UIWebView 462
第26章 UISplitViewController与NSRegularExpression 463
26.1在Nerdfeed中使用UISplitViewController 464
26.2主、从视图控制对象间的通信 468
26.3在竖排模式下显示主视图控制对象 475
26.4将Nerdfeed改为通用应用 477
26.5 NSRegularExpression 478
26.6初级练习:提取子论坛的名称 484
26.7中级练习:交换UIBarButtonItem对象 484
26.8中级练习:处理回帖 484
26.9高级练习:根据原帖分类显示 484
第27章Block对象 485
27.1 Block对象及其语法 485
27.2浅谈如何使用Block对象 490
27.3捕获变量 493
27.4 Block对象的常见用途 496
27.5深入学习:_block、简化语法与内存管理 497
27.6深入学习:多种回调机制的优缺点 500
第28章 模型-视图-控制器-存储 503
28.1为什么需要存储对象 503
28.2创建BNRFeedStore 506
28.3使用BNRFeedStore对象 508
28.4实现BNRFeedStore 511
28.5通过JSON格式传输数据 521
28.6再谈存储对象 526
28.7初级练习:用于设置曲目个数的界面 527
28.8高级练习:从另一个Web服务获取数据 527
28.9深入学习:JSON格式 527
第29章 再谈MVCS 529
29.1缓存RSS数据 529
29.2高级缓存 535
29.3己读RSSItem对象与未读RSSItem对象 545
29.4使用存储对象的其他益处 550
29.5初级练习:限制缓存大小 551
29.6中级练习:收藏 551
29.7高级练习:缓存JSON数据 551
29.8深入学习:设计存储对象 552
29.9深入学习:自动缓存与Cache…db 553
第30章iCloud 555
30.1使用iCloud前的准备工作 556
30.2 Ubiquity Container 556
30.3支持iCloud的provisioning profile 558
30.4 Core Data与iCloud 561
30.5深入学习:iCloud备份 567
第31章 后记 569
31.1接下来做什么 569
31.2结束语 570
索引 571