简介 i
本书适合哪些读者 i
第二版有哪些更新? i
教学理念 ii
如何使用本书 iii
本书是如何组织的 iii
代码风格 v
版式说明 vi
开发所需的硬件与软件 vi
第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
协议方法 84
委托机制、控制器对象和内存管理 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
深入浅出XIB:介绍文件所有者 137
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
深入学习:覆盖自动转屏 170
第10章 UITableView与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章 编辑UITableView 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
NSDictionary 232
创建并使用键 234
隐藏键盘 237
13.2 练习:删除图片 238
13.2 深入:摄像 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
21.3 Allocations组件 345
Allocations组件的设置选项 350
内存堆快照分析 352
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 为TouchDrawView上色 387
24.2 Block对象 389
Block对象与变量 389
捕获变量 393
通过其他内建的方法使用Block对象 396
通过Block对象保持代码的短小精练 396
24.3 范畴 397
24.4 深入学习:内存管理与Block对象 400
24.5 深入学习:比较多种回调机制实现途径的优缺点 403
第15章 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
第15章 Bonjour与Web服务端 463
28.1 Bonjour 463
创建CocoaServer 464
发布Bonjour服务 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
通过NSStream建立网络连接 489
为Apple服务器提供数据 493
处理投递错误 497
再谈针对流连接的数据读取 498
29.4 几种额外的客户端通知处理机制 498
声音和图标标记 499
通过推送通知传送自定义数据 500
29.5 正式的通知服务器以及其他发布事宜 502
29.6 深入学习:反馈服务 502
第30章 后记 503
30.1 接下来做什么 503
30.2 结束语 503
索引 505
· · · · · · (
收起)