第1章 iOS开发框架 1
1.1 苹果产品和重要的事件 1
1.2 应用商店——App Store 2
1.3 iOS软件的体系结构 2
1.3.1 核心操作系统层(Core OS) 3
1.3.2 核心服务层(Core Service) 4
1.3.3 媒体层(Media) 6
1.3.4 可轻触层(Cocoa Touch) 7
1.4 应用程序运行周期 8
1.4.1 应用程序的生命周期 8
1.4.2 应用程序的入口 9
1.4.3 应用程序的委托 9
1.4.4 加载主Nib文件 10
1.4.5 事件处理周期 10
1.5 应用程序运行环境 11
1.5.1 应用程序沙箱 12
1.5.2 自动休眠定时器 13
1.6 iOS软件设计规范 13
1.6.1 平台间的差异 13
1.6.2 3种应用程序样式 14
1.7 iOS开发工具——Xcode 15
第2章 Object-C高级知识 18
2.1 Object-C语言介绍 18
2.1.1 数据类型与表达式 18
2.1.2 流程控制 19
2.1.3 类与结构 19
2.2 类别(Category)介绍 21
2.2.1 认识类别(Category) 21
2.2.2 扩展NSString 23
2.2.3 扩展NSDictionary 25
2.2.4 扩展NSArray 27
2.2.5 Object-C与C++混合编程 28
2.2.6 静态库 30
第3章 MVC设计和Push消息 35
3.1 MVC框架设计 35
3.1.1 MVC设计思想 35
3.1.2 iPhone开发中的MVC 37
3.1.3 iPhone中MVC的实现 37
3.2 通知中心 41
3.2.1 NSNotification类 41
3.2.2 Notifications的常见误解 42
3.3 Push机制 44
3.3.1 Push消息需要的条件 47
3.3.2 在代码中使用Push消息 48
3.3.3 通过Mac发送Push消息 48
3.3.4 通过iPhone发送Push消息 53
第4章 视图高级使用技巧 62
4.1 界面工具Interface Builder 62
4.2 定制基础控件 63
4.2.1 定制UIButton 63
4.2.2 定制UIPickerView以实现隐藏功能 67
4.3 动画特效 72
4.3.1 UIViewAnimation动画 72
4.3.2 使用公有CATransition实现动画效果 75
4.3.3 使用私有CATransition实现动画效果 77
4.4 页面布局——横竖屏处理 78
第5章 数据持久化 81
5.1 Plist文件操作 81
5.2 NSUserDefaults操作 87
5.3 SQLite数据库操作 88
5.4 Core Data文件操作 93
5.4.1 Core Data特性 94
5.4.2 为何要使用Core Data 94
5.4.3 关于Core Data的常见误解 94
5.4.4 建立数据库模型 95
5.4.5 创建实体类 96
5.4.6 数据库操作 96
第6章 TableView使用 102
6.1 UITableView的组成及样式 102
6.2 UITableView的定义 104
6.3 UITableView的数据源 106
6.3.1 UITableViewDataSource协议 106
6.3.2 表格视图的实现 107
6.3.3 表格单元 110
6.3.4 创建表格单元的数据源 111
6.4 UITableView的委托 115
6.5 UITableView的编辑 116
6.6 UITableView实现气泡效果的表格 120
6.7 UITableView拖动以显示更多数据 128
第7章 文件I/O 133
7.1 文件系统 133
7.2 文件管理 134
7.2.1 读取并显示对应目录下的文件 135
7.2.2 获取文件属性信息 138
7.2.3 创建文件夹 141
7.2.4 创建文件 146
7.2.5 删除文件 149
7.3 本地数据存储规则 150
第8章 硬件和通信 151
8.1 摄像头 151
8.1.1 拍照 151
8.1.2 摄像 155
8.1.3 定制拍照界面 157
8.2 加速度计 158
8.2.1 加速度计原理 158
8.2.2 加速度计使用 158
8.3 陀螺仪 159
8.3.1 陀螺仪原理 160
8.3.2 陀螺仪使用 161
8.4 调用通讯录 162
8.4.1 读取通讯录 162
8.4.2 编辑通讯录 164
8.5 打电话 166
8.6 发短信 166
8.7 发邮件 168
第9章 iOS多媒体 170
9.1 图像 170
9.1.1 加载UIImage 170
9.1.2 UIImageView 172
9.1.3 访问照片 174
9.2 声音 176
9.2.1 System Sound Services 176
9.2.2 音频 179
9.3 视频 183
第10章 定位和地图 188
10.1 基础知识 188
10.2 iPhone定位方法 189
10.3 MKReverseGeocoder地理位置反向编码 194
10.4 LBS应用的类型 195
10.5 谷歌地图 196
10.5.1 在地图上增加大头针标注的方法 198
10.5.2 在地图上画线 202
第11章 网络编程 208
11.1 iOS网络编程 208
11.1.1 NSURLConnection 208
11.1.2 网络编程示例 210
11.2 ASIHTTPRequest 214
11.2.1 使用ASIHTTPRequest 215
11.2.2 ASIHTTPRequest使用示例 218
11.3 检查网络状态 224
11.3.1 SCNetworkReachability 224
11.3.2 Reachability 225
第12章 连接到互联网 229
12.1 使用UIWebView 229
12.2 解析XML 233
12.2.1 iOS下的XML解析库 234
12.2.2 NSXMLParser 234
12.2.3 第三方解析器 237
12.2.4 编写简单天气解析应用 238
12.3 解析JSON 245
12.3.1 iPhone的JSON 245
12.3.2 JSON解析库 247
第13章 多线程编程 248
13.1 UNIX多线程机制的使用 248
13.2 NSThread创建多线程的方法 251
13.2.1 线程的创建与启动 251
13.2.2 线程的同步与锁 252
13.2.3 线程的交互和其他控制方法 255
13.2.4 线程的睡眠 257
13.3 线程池NSOperationQueue 258
13.3.1 创建线程操作NSOperation 258
13.3.2 任务控制 259
13.4 生产者—消费者模型 262
13.4.1 使用@synchronized 262
13.4.2 使用NSLocking协议 264
第14章 2D和3D绘图编程 267
14.1 Quartz 2D 267
14.1.1 画布(Canvas) 267
14.1.2 绘图上下文(Graphics Context) 268
14.1.3 Quartz 2D数据类型 268
14.1.4 图形状态 269
14.1.5 Quartz 2D坐标系统 270
14.1.6 内存管理 271
14.1.7 绘制图形图像 271
14.1.8 绘制OpenFlow效果的倒影 287
14.2 3D绘图OpenGLES 289
14.2.1 OpenGL OpenGLES简介 290
14.2.2 OpenGL ES在iPhone绘图中的应用 290
第15章 调试和优化 302
15.1 常见错误 302
15.1.1 版本错误 302
15.1.2 证书错误 303
15.1.3 编写错误 304
15.1.4 导入错误 305
15.2 调试跟踪 308
15.2.1 使用调试器 308
15.2.2 使用日志 310
15.3 使用Instruments 311