第1章 iPhone与iPad简介 1
1.1 历史回顾 1
1.2 人人为我,我为人人:iPhone OS平台 2
1.3 核心硬件规范 2
1.3.1 iPhone 2
1.3.2 iPad 3
1.3.3 iPod Touch 4
1.3.4 iPhone和iPad的输入及输出规范 4
1.3.5 iPhone和iPad网络规范 5
1.3.6 iPhone OS浏览器规范 6
1.3.7 移动Web标准 7
1.3.8 其他硬件特性 7
1.4 iPhone和iPad的独特之处 8
1.5 理解iPhone和iPad触摸式交互 9
1.6 小结 10
第2章 Objective-C和iPhone OS SDK 11
2.1 准备使用SDK 11
2.1.1 安装SDK 11
2.1.2 SDK剖析 13
2.2 Objective-C介绍 14
2.2.1 概述 14
2.2.2 消息 15
2.2.3 类定义 17
2.2.4 属性 18
2.2.5 其他编译器指令 20
2.2.6 类别和协议 20
2.2.7 Objective-C总结 21
2.3 iPhone OS介绍 22
2.3.1 iPhone OS剖析 22
2.3.2 iPhone OS的对象层次结构 23
2.3.3 窗口和视图 24
2.4 iPhone OS的方法 25
2.4.1 对象创建 25
2.4.2 内存管理 27
2.4.3 事件响应 28
2.4.4 生命周期管理 29
2.5 小结 30
第3章 使用Xcode 31
3.1 Xcode简介 31
3.1.1 剖析Xcode 31
3.1.2 在Xcode中编译和执行 33
3.2 在Xcode中创建第一个iPhone项目:Hello,World! 33
3.2.1 理解main.m 33
3.2.2 理解应用程序委托 34
3.2.3 编写“Hello,World!” 36
3.3 在Xcode中创建第一个iPad项目:Hello,World! 38
3.4 在Xcode中创新建类 39
3.4.1 新类简介 39
3.4.2 头文件 39
3.4.3 源代码文件 40
3.4.4 链接 42
3.5 Xcode的其他功能 42
3.5.1 使用Xcode添加框架 42
3.5.2 在Xcode中使用其他模板 42
3.5.3 Xcode提示和技巧 43
3.6 小结 44
第4章 使用Interface Builder 45
4.1 Interface Builder介绍 45
4.1.1 Interface Builder剖析 46
4.1.2 在Interface Builder中模拟 48
4.2 在Interface Builder中创建第一个项目:图片和网页 48
4.2.1 新建对象 48
4.2.2 操作图形对象 49
4.2.3 使用检查器窗口 49
4.2.4 使用图片 51
4.3 在Interface Builder中建立连接 52
4.3.1 声明IBOutlet 52
4.3.2 连接对象 53
4.3.3 使用IBOutlet编写代码 54
4.4 其他Interface Builder功能 55
4.4.1 建立其他连接 55
4.4.2 创建外部对象 55
4.4.3 初始化Interface Builder对象 56
4.4.4 访问.xib文件 56
4.4.5 新建.xib文件 57
4.5 小结 57
第5章 创建基本视图控制器 58
5.1 视图控制器家族 58
5.2 标准视图控制器 59
5.2.1 视图控制器剖析 60
5.2.2 创建视图控制器 60
5.2.3 创建另一个视图控制器 60
5.2.4 构建视图控制器界面 61
5.2.5 使用视图控制器 62
5.3 表视图控制器 66
5.3.1 剖析表视图控制器 66
5.3.2 创建表视图控制器 66
5.3.3 构建表界面 67
5.3.4 使用表视图控制器 72
5.4 小结 73
第6章 监控事件和动作 74
6.1 事件简介 74
6.1.1 响应者链 74
6.1.2 触摸和事件 76
6.2 触摸的例子:事件报告程序 77
6.2.1 在Interface Builder中构建应用程序 78
6.2.2 为触摸准备视图 79
6.2.3 控制事件 80
6.3 其他事件功能 82
6.3.1 规则化事件 82
6.3.2 其他事件方法和属性 83
6.4 动作简介 84
6.4.1 UIControl对象 84
6.4.2 控件事件和动作 84
6.4.3 使用addTarget:action:forControlEvents:方法 86
6.5 向应用程序添加按钮 86
6.5.1 使用addTarget:action:forControlEvents:与按钮 87
6.5.2 使用IBAction与按钮 87
6.6 其他动作功能 88
6.6.1 使用UITextField接受文本输入 88
6.6.2 允许使用UISlider来选择值 90
6.6.3 TextField/Slider组合 90
6.6.4 创建动作很容易 92
6.6.5 使用动作 92
6.7 通知简介 92
6.8 小结 93
第7章 创建高级视图控制器 94
7.1 标签栏视图控制器 94
7.1.1 剖析标签栏视图控制器 94
7.1.2 创建标签栏控制器 95
7.1.3 构建标签栏界面 97
7.1.4 使用标签栏控制器 100
7.2 导航控制器 101
7.2.1 剖析导航控制器 101
7.2.2 创建导航控制器 102
7.2.3 完成导航控制器 102
7.2.4 使用导航控制器 106
7.3 使用翻转控制器 108
7.4 分割视图控制器 110
7.4.1 创建分割视图控制器 110
7.4.2 构建分割视图控制器 112
7.4.3 使用分割视图控制器 115
7.4.4 为竖向模式和横向模式调整界面 116
7.5 弹出式视图控制器和模式视图控制器 116
7.5.1 创建弹出式视图控制器 117
7.5.2 创建模式视图控制器 117
7.6 小结 118
第8章 数据:动作、首选项和文件 119
8.1 接收用户动作 119
8.2 管理用户首选项 120
8.2.1 创建自己的首选项 121
8.2.2 使用系统设置 125
8.3 打开文件 129
8.3.1 访问软件包 130
8.3.2 访问其他目录 131
8.3.3 操纵文件 131
8.3.4 Filesaver:一个UITextView示例 132
8.4 小结 135
第9章 数据:高级技术 136
9.1 使用SQLite 136
9.1.1 设置SQLite数据库 137
9.1.2 访问SQLite 138
9.1.3 访问SQLite数据库 138
9.1.4 通过数据库构建导航菜单 139
9.1.5 本例的扩展 145
9.2 访问地址簿 145
9.2.1 框架概述 145
9.2.2 访问地址簿属性 146
9.2.3 查询地址簿 147
9.2.4 使用地址簿UI 149
9.3 Core Data简介 153
9.3.1 关于Core Data的背景知识 153
9.3.2 在应用程序中设置Core Data 154
9.3.3 初始化Core Data对象 155
9.3.4 为数据库添加对象 158
9.3.5 在Core Data中提取、更新和删除对象 158
9.4 小结 160
第10章 定位:加速计、位置和罗盘 161
10.1 加速计和方向 161
10.1.1 orientation属性 161
10.1.2 方向通知 162
10.2 加速计和移动 162
10.2.1 访问UIAccelerometer 163
10.2.2 解析UIAcceleration 163
10.2.3 查看重力 164
10.2.4 查看移动 166
10.2.5 识别简单的加速计移动 166
10.3 加速计和手势 168
10.4 Core Location 170
10.4.1 位置类 171
10.4.2 使用位置和距离的示例 172
10.4.3 使用海拔的示例 174
10.4.4 使用罗盘 177
10.4.5 Core Location和互联网 178
10.5 小结 178
第11章 媒体:图像和照相机 179
11.1 图像介绍 179
11.1.1 加载UIImage 180
11.1.2 绘制UIImageView 180
11.1.3 在UIKit中修改图像 181
11.2 利用Core Graphics绘制简单图像 182
11.3 访问照片 183
11.3.1 使用图像选取器 183
11.3.2 拍照 184
11.3.3 保存到相册 185
11.4 拼合:一个图像例子 185
11.4.1 拼合视图控制器 185
11.4.2 拼合临时图像视图 189
11.4.3 拼合视图 190
11.4.4 扩展这个例子 191
11.5 小结 191
第12章 媒体:音频和录音 192
12.1 播放iPod库中的音频 192
12.1.1 从iPod媒体库中检索音频条目 192
12.1.2 获取MPMediaItem的信息 194
12.1.3 使用MPMusicPlayerController播放媒体条目 194
12.1.4 示例:创建一个简单的媒体播放器应用程序 196
12.2 录制音频 198
12.2.1 初始化音频录音器 198
12.2.2 控制音频录音器 199
12.2.3 响应AVAudioRecorder事件 200
12.3 手动播放声音 201
12.3.1 初始化AVAudio Player 201
12.3.2 AVAudioPlayer Delegate 202
12.3.3 控制AVAudioPlayer 202
12.4 示例:创建一个简单的音频录制/播放应用程序 203
12.4.1 创建一个基于视图的应用程序 204
12.4.2 添加所需的框架 204
12.4.3 构建IBAction 204
12.4.4 创建界面 204
12.4.5 设置音频录音器并实现IBAction操作 205
12.5 录制、播放和访问视频 206
12.6 小结 207
第13章 图形:Quartz、Core Animation和OpenGL 209
13.1 Quartz 2D简介 209
13.2 Quartz上下文 210
13.2.1 在UIView上绘制图形 211
13.2.2 在位图上绘制图形 212
13.3 绘制路径 213
13.3.1 结束路径 214
13.3.2 创建可重用路径 214
13.3.3 绘制矩形 215
13.4 设置图形状态 216
13.4.1 设置颜色 216
13.4.2 变换 217
13.4.3 设置裁剪路径 219
13.4.4 其他设置 220
13.4.5 管理状态 220
13.5 Quartz中的高级绘图功能 220
13.5.1 绘制渐变 221
13.5.2 绘制图像 222
13.5.3 绘制文字 223
13.5.4 未介绍的内容 224
13.6 示例:在图片上绘图 224
13.6.1 PhotoDraw视图控制器 225
13.6.2 photodraw视图 226
13.6.3 扩展示例 228
13.7 Core Animation简介 229
13.7.1 Core Animation基础 230
13.7.2 Core Animation入门 230
13.7.3 绘制简单的隐式动画 230
13.7.4 绘制简单的显式动画 231
13.8 OpenGL简介 232
13.9 小结 232
第14章 Web:Web视图和互联网协议 234
14.1 互联网的层次结构 234
14.2 低层次联网 234
14.3 使用URL 236
14.3.1 创建NSURL 236
14.3.2 构建NSURLRequest 237
14.3.3 手动操作HTML数据 238
14.4 使用UIWebView 238
14.4.1 调用Web视图 239
14.4.2 管理Web视图委托 239
14.4.3 缩略图:一个Web视图例子 240
14.5 解析XML 242
14.5.1 启动NSXMLParser 242
14.5.2 充当委托 243
14.5.3 构建示例RSS阅读器 244
14.5.4 海拔高度重读:一个Core Location示例 248
14.6 提交给Web 250
14.6.1 手动提交 250
14.6.2 提交表单 251
14.7 访问社交网络 252
14.7.1 使用Web协议 252
14.7.2 使用TouchJSON 253
14.8 小结 255
第15章 使用Game Kit进行P2P连接 256
15.1 Game Kit概述 256
15.2 使用对等点选取器创建P2P应用程序 257
15.2.1 使用苹果公司的内置对等点选取器 257
15.2.2 实现GKSession Delegate方法 260
15.2.3 在对等点之间发送和接收数据 261
15.3 示例:创建一个多人乒乓球游戏 263
15.3.1 启动GKTennis项目 264
15.3.2 创建头文件 264
15.3.3 创建乒乓球游戏界面 265
15.3.4 游戏初始化 266
15.3.5 建立对等点选取器并进行连接 267
15.3.6 实现send和receive方法 268
15.3.7 游戏循环 270
15.3.8 用户交互 273
15.4 小结 274
第16章 推送通知服务 275
16.1 什么是推送通知 275
16.2 苹果公司的推送通知系统概述 276
16.3 准备在应用程序中使用推送通知服务 277
16.3.1 设置应用程序证书 278
16.3.2 建立供应配置文件 279
16.3.3 处理推送通知的代码 279
16.3.4 准备音频文件 281
16.4 使用PHP创建一个推送通知提供程序 281
16.4.1 创建SSL证书 282
16.4.2 实现PHP推送通知提供程序 283
16.5 小结 284
第17章 Map Kit框架 285
17.1 Map Kit概述 285
17.2 向应用程序添加地图 285
17.2.1 使用Interface Builder添加地图 285
17.2.2 用编程方式添加地图 287
17.2.3 控制地图 287
17.3 翻译地理编码 289
17.4 标注地图 290
17.4.1 添加基本地图标注 291
17.4.2 添加自定义地图标注 292
17.5 小结 296
第18章 使用Store Kit实现应用内购买 297
18.1 建立沙盒测试环境 297
18.1.1 创建iTunes测试用户 298
18.1.2 添加产品 299
18.2 创建一个简单的商店界面 301
18.3 小结 309
第19章 iPhone SDK增强功能 311
19.1 自定义键盘附件 311
19.1.1 扩展UITextField 312
19.1.2 实现自定义UIText Field 314
19.1.3 自定义键盘 314
19.2 继续:iPhone 4.0 SDK 316
19.2.1 多任务 316
19.2.2 用户体验增强功能 317
19.2.3 多媒体框架增强功能 317
19.2.4 Game Center 317
19.3 小结 318
附录A iPhone OS类参考 319
附录B 外部资源和参考资料 322
附录C 发布SDK程序 324
附录D 针对iPad更新当前应用程序 327