第1章 多线程编程 1
1.1多线程概念 1
1.1.1多线程概述 1
1.1.2线程的串行和并行 4
1.1.3多线程技术种类 5
1.2使用NSThread实现多线程 5
1.2.1线程的创建和启动 5
1.2.2线程的状态 9
1.2.3线程间的安全隐患 11
1.2.4 线程间的通信 15
1.3使用GCD实现多线程 17
1.3.1 GCD简介 17
1.3.2创建队列 19
1.3.3提交任务 20
1.3.4实战演练——使用GCD下载图片 30
1.3.5单次或重复执行任务 32
1.3.6 调度队列组 34
1.4 NSOperation和NSOperationQueue 37
1.4.1 NSOperation简介 37
1.4.2 NSOperationQueue简介 39
1.4.3使用NSOperation子类操作 42
1.4.4实战演练——自定义NSOperation子类下载图片 44
1.4.5实战演练——对NSOperation操作设置依赖关系 47
1.4.6实战演练——模拟暂停和继续操作 48
1.5本章小结 50
第2章 网络编程 51
2.1网络基本概念 51
2.1.1网络编程的原理 51
2.1.2 URL介绍 52
2.1.3 TCP/IP和TCP、 UDP 53
2.1.4 Socket介绍 55
2.1.5实战演练——Socket聊天 57
2.2原生网络框架NSURLConnection 62
2.2.1 NSURLRequest类 62
2.2.2 NSURLConnection介绍 63
2.2.3 Web视图 65
2.2.4实战演练——Web视图加载百度页面 67
2.3数据解析 70
2.3.1配置Apache服务器 70
2.3.2 XML文档结构 74
2.3.3解析XML文档 75
2.3.4实战演练——使用NSXMLParser解析XML文档 75
2.3.5 JSON文档结构 87
2.3.6 解析JSON文档 88
2.3.7实战演练——使用NSJSONScrialization解析天气预报 89
2.4 HTTP请求 91
2.4.1 HTTP和HTTPS 92
2.4.2 GET和POST方法 92
2.4.3实战演练——模拟POST用户登录 94
2.4.4数据安全——MD5算法 98
2.4.5钥匙串访问 101
2.4.6 实战演练——模拟用户安全登录 101
2.5文件的上传与下载 109
2.5.1上传文件的原理 109
2.5.2实战演练——上传单个文件 112
2.5.3实战演练——上传多个文件 115
2.5.4 NSURLConnection下载 118
2.5.5 NSURLSession介绍 121
2.5.6实战演练——使用NSURLSession实现下载功能 123
2.6 第三方框架 127
2.6.1 SDWebImage介绍 127
2.6.2 AFNetworking和ASIHTTPRequest框架 131
2.7本章小结 133
第3章iPad开发 135
3.1 iPhone和iPad开发的异同 135
3.2 UIPopoverController 137
3.2.1 UIPopoverController简介 137
3.2.2 UIPopoverController的使用 139
3.2.3实战演练——弹出Popover视图 142
3.3 UISplitViewController 154
3.3.1 UISplitViewController简介 154
3.3.2 UISplitViewController的使用 156
3.3.3实战演练——菜谱 158
3.4本章小结 172
第4章 多媒体和硬件 173
4.1使用AVAudioRecorder录制音频 173
4.2音效、音频的播放 176
4.2.1使用系统声音服务播放音效 176
4.2.2使用AVAudioPlayer播放音乐 177
4.2.3 使用MPMediaPickerController选择系统音乐 180
4.2.4 播放在线音乐 182
4.2.5实战演练——音乐播放器 185
4.3相机和图库 193
4.3.1使用UIImagePickerController操作摄像头和照片库 193
4.3.2实战演练——拍照和相片库 196
4.4使用MPMoviePlayerController播放视频 199
4.5扫描二维码 203
4.6传感器、陀螺仪、加速计 206
4.6.1传感器介绍 206
4.6.2距离传感器 206
4.6.3陀螺仪介绍 207
4.6.4加速计 210
4.6.5实战演练——计步器 213
4.7蓝牙 215
4.8本章小结 219
第5章Address Book 220
5.1 iOs 7及iOs 8的联系人管理框架 220
5.1.1使用Address Book框架管理联系人 220
5.1.2使用Address BookUI框架管理联系人 225
5.2实战演练——使用UIApplication 打电话和发短信 229
5.3 iOS 9中管理联系人的新框架 236
5.3.1使用Contacts框架管理联系人 236
5.3.2使用ContactsUI框架管理联系人 240
5.4本章小结 243
第6章 使用MapKit开发地图服务 244
6.1根据地址定位 244
6.1.1根据地址定位 245
6.1.2正向地理编码和反向地理编码 249
6.2 MapKit框架 251
6.2.1 MKMapView控件 251
6.2.2指定地图显示中心和显示区域 253
6.2.3使用iOS 7新增的MKMapCamen 255
6.3在地图上添加锚点 257
6.3.1添加简单的锚点 257
6.3.2添加自定义锚点 259
6.4使用iOS 7新增的MKTile Overlay覆盖层 262
6.5使用iOS 7新增的MKDirections获取导航路线 264
6.6实战演练——行车导航仪 268
6.7第三方使用——百度地图 272
6.8本章小结 278
第7章 推送机制 279
7.1推送机制概述 279
7.2 iOS本地通知 281
7.3实战演练——闹钟 283
7.4 iOS远程推送通知 291
7.5极光推送 297
7.6 本章小结 302
第8章 内购、广告和指纹识别 303
8.1内购 303
8.1.1在App Store上的准备工作 304
8.1.2实现内购功能 318
8.2广告 321
8.3指纹识别 323
8.4本章小结 327
第9章 屏幕适配 328
9.1屏幕适配历史背景介绍 328
9.2 Autoresizing 330
9.2.1在Interface Builder中使用Autoresizing 330
9.2.2在代码中设置AutoresizingMask属性 333
9.3 Auto Layout 336
9.3.1在Interface Builder中管理Auto Layout 336
9.3.2实战演练——使用Auto Layout布局界面 338
9.4 Size Class 343
9.4.1在Interface Builder中使用Size Class 343
9.4.2实战演练——使用Size Class布局QQ登录界面 345
9.5第三方框架——Masonry框架 347
9.5.1 Masonry框架介绍 347
9.5.2 Masonry框架的使用 349
9.6本章小结 352
第10章 国际化 353
10.1概述 353
10.2国际化应用程序显示名称 355
10.3国际化界面设计 359
10.4文本信息国际化 361
10.5程序内部切换语言 363
10.6本章小结 365