iOS开发如日中天,iOS 6又为我们带来了大量的高级特性,从事移动开发的你,还等什么?
本书急开发者之所急,揭秘了多数开发类图书未曾展示过的iOS 6高级特性和开发技巧,带你深入了解iOS 6。作者结合自己多年的实践经验,毫无保留、面面俱到地讲解了如何充分利用强大的SDK将你的移动开发技能发挥到极致。全书涵盖了安全、多任务处理、多平台运行、块与函数式编程、高级文本布局、性能调优,以及如何通过应用内购买功能提高销售业绩。
久经“杀场”的两位作者Rob Napier和Mugunth Kumar在本书中分享了他们为苹果移动设备开发“杀手级”应用的宝贵经验。以下是本书部分精彩内容摘录:
兼容iPhone 5 充分利用集合视图
操作Objective-C运行时 性能调优和消除BUG
用Security Services确保数据安全 面向REST式Web服务创建高性能应用
实现诱人的动画效果 在网络连接质量不一的情况下实现超快缓存
用Core Text打造精妙的文本布局 充分发挥Core Foundation的强大功能
目 录
第一部分 全新功能
第1章 全新的系统2
1.1 新功能2
1.1.1 集合视图3
1.1.2 自动布局3
1.1.3 自动引用计数3
1.1.4 应用内购买的托管内容4
1.1.5 社交框架4
1.1.6 UI状态保留4
1.1.7 其他新功能4
1.2 小结6
1.3 扩展阅读6
第2章 熟悉Xcode 4和LLVM编译器7
2.1 了解用户界面8
2.1.1 标签式编辑器9
2.1.2 按键绑定的变化9
2.1.3 工程设置编辑器10
2.1.4 内置的版本控制系统10
2.1.5 工作区10
2.2 单窗口工作方式10
2.3 导航面板11
2.3.1 工程导航面板12
2.3.2 符号导航面板12
2.3.3 搜索导航面板12
2.3.4 问题导航面板12
2.3.5 调试导航面板12
2.3.6 断点导航面板12
2.3.7 日志导航面板13
2.4 辅助功能13
2.5 内置的Interface Builder13
2.6 Xcode之核心:LLVM编译器14
2.6.1 Clang编译器前端15
2.6.2 我是一个Bug!修复我15
2.7 LLVM 4的新功能15
2.7.1 字面量15
2.7.2 字面量和可用性检查18
2.7.3 实例变量的自动合成18
2.8 使用Git进行版本控制19
2.8.1 内置的Git版本控制系统19
2.8.2 版本编辑器19
2.8.3 Git最佳实践19
2.9 Scheme20
2.9.1 为什么使用Scheme20
2.9.2 建议用Scheme实现你的意图21
2.9.3 创建一个Scheme21
2.9.4 共享你的Scheme22
2.10 为编译配置添加注释22
2.10.1 创建xcconfig文件22
2.10.2 重构编译配置文件23
2.11 将代码转换为支持ARC的Objective-C代码23
2.12 Xcode 4 Organizer25
2.12.1 Automatic Device Provisioning25
2.12.2 查看崩溃日志和控制台输出25
2.12.3 查看应用沙盒数据26
2.12.4 管理版本库26
2.12.5 管理应用程序归档26
2.12.6 查看Objective-C和SDK文档26
2.13 小结26
2.14 扩展阅读26
2.14.1 苹果文档26
2.14.2 WWDC讲座27
2.14.3 博客27
2.14.4 网上资源27
2.14.5 图书27
第二部分 熟能生巧
第3章 Objective-C基础知识30
3.1 命名约定30
3.2 自动引用计数32
3.3 属性35
3.3.1 属性修饰关键字36
3.3.2 属性最佳实践37
3.3.3 私有实例变量37
3.4 存取器37
3.5 分类和扩展38
3.5.1 +load方法40
3.5.2 使用关联引用为分类添加数据40
3.5.3 类扩展42
3.6 正式协议和非正式协议42
3.7 小结43
3.8 扩展阅读44
3.8.1 苹果文档44
3.8.2 其他资源44
第4章 Cocoa设计模式45
4.1 理解模型?视图?控制器45
4.1.1 使用模型类46
4.1.2 使用视图类46
4.1.3 使用控制器类47
4.2 理解委托和数据源47
4.3 使用命令模式48
4.3.1 使用目标?动作48
4.3.2 使用方法签名和调用49
4.3.3 使用蹦床52
4.3.4 撤销55
4.4 使用观察者模式55
4.5 使用单例模式58
4.6 小结60
4.7 扩展阅读60
4.7.1 苹果文档60
4.7.2 其他资源61
第5章 通过Objective-C的ARC管理内存62
5.1 Objective-C的ARC基础入门62
5.1.1 历史简介62
5.1.2 手动引用计数与自动引用计数63
5.2 什么是ARC63
5.2.1 在ARC工程中集成非ARC的第三方代码64
5.2.2 在非ARC工程中集成ARC代码64
5.2.3 框架中的ARC代码64
5.2.4 ARC空声明变量67
5.2.5 Objective-C命名约定67
5.2.6 覆盖默认行为67
5.2.7 自由桥接68
5.2.8 ARC内部原理68
5.3 常见的ARC移植错误69
5.4 小结72
5.5 扩展阅读72
5.5.1 苹果文档72
5.5.2 WWDC讲座72
5.5.3 博客73
第6章 熟练使用表视图74
6.1 UITableView类的继承关系74
6.2 熟悉表视图75
6.2.1 UITableViewController75
6.2.2 UITableViewCell75
6.2.3 提高表视图的滚动速度75
6.2.4 自定义非重复表单元82
6.2.5 表视图最佳方案:编写简洁代码,简化控制器内容83
6.3 小结87
6.4 扩展阅读87
6.4.1 苹果文档87
6.4.2 其他资源87
第7章 集合视图与自动布局88
7.1 集合视图88
7.1.1 类与协议88
7.1.2 示例89
7.2 自动布局97
7.2.1 使用自动布局98
7.2.2 了解自动布局98
7.2.3 相对布局约束98
7.2.4 视觉化格式语言101
7.2.5 调试布局错误102
7.3 小结103
7.4 扩展阅读104
7.14.1 苹果文档104
7.14.2 WWDC讲座104
第8章 绘图功能105
8.1 iOS的不同绘图系统105
8.2 UIKit和视图绘图周期106
8.3 视图绘制与视图布局108
8.4 自定义视图绘制108
8.4.1 通过UIKit绘图109
8.4.2 路径109
8.4.3 理解坐标系111
8.4.4 重新调整大小以及内容模式114
8.4.5 变形115
8.4.6 通过Core Graphics进行绘制117
8.4.7 混用UIKit与Core Graphics120
8.4.8 管理图形上下文121
8.5 优化UIView绘制123
8.5.1 避免绘图123
8.5.2 缓存与后台绘制123
8.5.3 自定义绘图与预渲染123
8.5.4 像素对齐与模糊文本124
8.5.5 透明、不透明与隐藏125
8.6 CGLayer125
8.7 小结127
8.8 扩展阅读127
8.8.1 苹果文档127
8.8.2 其他资源128
第9章 Core Animation 129
9.1 视图动画129
9.2 管理用户交互131
9.3 图层绘制132
9.3.1 直接设置内容134
9.3.2 实现display方法134
9.3.3 自定义绘图135
9.3.4 在自己的上下文中绘图136
9.4 移动对象136
9.4.1 隐式动画137
9.4.2 显式动画137
9.4.3 模型与表示138
9.4.4 关于定时140
9.5 三维动画142
9.6 美化图层145
9.7 用动作实现自动动画146
9.8 为自定义属性添加动画147
9.9 Core Animation与线程148
9.10 小结149
9.11 扩展阅读149
9.11.1 苹果文档149
9.11.2 其他资源149
第10章 错误处理150
10.1 错误处理模式150
10.2 断言151
10.3 异常153
10.4 捕获与报告程序崩溃153
10.5 错误和NSError154
10.6 错误处理块156
10.7 日志157
10.7.1 记录敏感信息158
10.7.2 获取日志文件159
10.8 小结159
10.9 扩展阅读159
10.9.1 苹果文档159
10.9.2 其他资源159
第11章 位置服务161
11.1 Core Location框架161
11.1.1 获取用户位置162
11.1.2 使用内置的罗盘获取用户前进方向162
11.1.3 位置服务和用户隐私163
11.2 后台位置服务165
11.2.1 后台获取位置更新165
11.2.2 显著位置变更通知165
11.2.3 区域监控(地理围栏)167
11.3 位置模拟167
11.4 时刻关注电量消耗168
11.5 小结168
11.6 扩展阅读168
第三部分 选择工具
第12章 表视图常用UI范例170
12.1 下拉刷新170
12.2 无限滚动173
12.3 行内编辑与键盘175
12.4 UITableView的动画效果177
12.5 表视图动画的实际应用178
12.5.1 实现折叠列表178
12.5.2 实现选项抽屉180
12.5.3 在表视图单元格中使用手势识别器181
12.6 小结181
12.7 扩展阅读182
第13章 多任务183
13.1 后台运行最佳实践:能力越大责任越大183
13.2 状态恢复系统185
13.2.1 测试状态恢复系统186
13.2.2 选择性加入186
13.2.3 应用启动过程的变化187
13.2.4 状态恢复标识符187
13.2.5 状态编码器与状态解码器188
13.2.6 表视图和集合视图191
13.2.7 状态恢复系统的高级应用192
13.3 多任务和运行循环简介192
13.4 以操作为中心的多任务开发193
13.5 用GCD实现多任务197
13.5.1 GCD和ARC198
13.5.2 源和定时器198
13.5.3 用分派屏障创建同步点199
13.5.4 队列目标和优先级200
13.5.5 分派组201
13.5.6 队列关联数据202
13.5.7 分派数据202
13.6 小结203
13.7 扩展阅读203
13.7.1 苹果文档203
13.7.2 WWDC讲座203
13.7.3 其他资源203
第14章 REST解惑204
14.1 REST简介205
14.2 选择数据交换格式205
14.2.1 在iOS中解析XML205
14.2.2 在iOS中解析JSON206
14.2.3 XML与JSON207
14.2.4 模型版本化208
14.3 假想的Web服务208
14.4 重要提醒209
14.5 RESTfulEngine架构(iHotelApp示例代码)209
14.5.1 NSURLConnection与第三方框架209
14.5.2 创建RESTfulEngine210
14.5.3 使用访问令牌对API调用进行认证213
14.5.4 在RESTfulEngine.m中覆盖相关方法以添加自定义认证头部213
14.5.5 取消请求214
14.5.6 请求响应214
14.5.7 对JSON数据进行键值编码215
14.5.8 列表页面的JSON对象与详细页面的JSON对象217
14.5.9 嵌套JSON对象217
14.5.10 少即是多219
14.5.11 错误处理219
14.5.12 本地化221
14.5.13 使用分类处理其他格式221
14.5.14 在iOS中提升性能的小技巧222
14.6 小结222
14.7 扩展阅读222
14.7.1 苹果文档222
14.7.2 其他资源223
第15章 通过安全服务巩固系统安全224
15.1 理解iOS沙盒224
15.2 保证网络通信的安全225
15.2.1 证书工作原理226
15.2.2 检验证书的有效性228
15.2.3 判断证书的可信度231
15.3 使用文件保护233
15.4 使用钥匙串234
15.5 使用加密236
15.5.1 AES概要237
15.5.2 使用PBKDF2将密码转换成密钥237
15.5.3 AES模式和填充239
15.5.4 初始化向量240
15.5.5 使用HMAC进行认证241
15.5.6 错误的密码241
15.5.7 进行单槽加密242
15.5.8 提高CommonCrypto的性能244
15.5.9 组合使用加密和压缩247
15.6 小结247
15.7 扩展阅读248
15.7.1 苹果文档248
15.7.2 WWDC讲座248
15.7.3 其他资源248
第16章 在多个苹果平台和苹果设备上运行应用249
16.1 开发多平台应用249
16.1.1 可配置的目标设置:Base SDK和Deployment Target250
16.1.2 支持多个SDK时的注意事项:框架、类和方法250
16.1.3 检查框架、类和方法的可用性252
16.2 检测设备的功能253
16.2.1 检测设备及判断功能253
16.2.2 检测硬件和传感器254
16.3 应用内发送Email和短信258
16.4 检查多任务支持258
16.5 支持iPhone 5259
16.6 UIRequiredDeviceCapabilities260
16.7 小结261
16.8 扩展阅读262
16.8.1 苹果文档262
16.8.2 其他资源262
第17章 国际化和本地化263
17.1 什么是本地化263
17.2 本地化字符串264
17.3 对未本地化的字符串进行审查265
17.4 格式化数字和日期266
17.5 nib文件和Base Internationalization269
17.6 本地化复杂字符串270
17.7 小结272
17.8 扩展阅读272
17.8.1 苹果文档272
17.8.2 WWDC讲座272
第18章 通过应用内购买提高销售业绩273
18.1 开始之前273
18.2 应用内购买什么273
18.2.1 禁止通过应用内购买出售的产品274
18.2.2 重新思考你的商业模式275
18.3 在iTunes Connect上设置产品配置275
18.3.1 第一步:为你的应用创建一个新的App ID276
18.3.2 第二步:生成配置文件277
18.3.3 第三步:创建应用的产品项277
18.3.4 第四步:创建应用内购买产品项278
18.3.5 第五步:生成共享密钥279
18.3.6 第六步:创建测试账户279
18.3.7 第七步:创建托管内容279
18.4 实现应用内购买281
18.5 MKStoreKit简介281
18.5.1 为什么要用MKStoreKit281
18.5.2 MKStoreKit的设计282
18.5.3 定制MKStoreKit283
18.6 实现购买285
18.7 下载托管内容285
18.8 测试代码286
18.9 排错286
18.9.1 无效的产品ID286
18.9.2 无法连接iTunes Store286
18.9.3 你已经购买了该产品,但它尚未下载287
18.10 小结287
18.11 扩展阅读287
18.11.1 苹果文档287
18.11.2 博客287
18.11.3 其他资源287
第19章 调试288
19.1 LLDB288
19.2 使用LLDB进行调试288
19.2.1 dSYM文件289
19.2.2 符号化290
19.3 断点291
19.4 观察点294
19.5 LLDB控制台295
19.6 NSZombieEnabled标志298
19.7 不同的崩溃类型299
19.7.1 EXC_BAD_ACCESS299
19.7.2 SIGSEGV300
19.7.3 SIGBUS300
19.7.4 SIGTRAP300
19.7.5 EXC_ARITHMETIC300
19.7.6 SIGILL300
19.7.7 SIGABRT301
19.7.8 看门狗超时301
19.7.9 自定义错误信号处理程序301
19.8 收集崩溃报告302
19.9 第三方崩溃报告服务303
19.10 小结303
19.11 扩展阅读304
19.11.1 苹果文档304
19.11.2 WWDC讲座304
19.11.3 其他资源304
第20章 性能调优305
20.1 性能思维模式305
20.1.1 指导方针一:产品是为了取悦用户才存在的305
20.1.2 指导方针二:设备是为了方便用户而存在的305
20.1.3 指导方针三:做到极致305
20.1.4 指导方针四:用户的感知才是实际的306
20.1.5 指导方针五:关注能带来大收益的方面306
20.2 欢迎走入Instruments的世界306
20.3 查找内存问题308
20.4 查找CPU问题311
20.4.1 Accelerate框架314
20.4.2 GLKit315
20.5 绘图性能315
20.6 优化磁盘访问和网络访问317
20.7 小结318
20.8 扩展阅读318
20.8.1 苹果文档318
20.8.2 其他资源318
第四部分 超越极限
第21章 故事板及自定义切换效果320
21.1 初识故事板320
21.1.1 实例化故事板321
21.1.2 加载故事板中的视图控制器321
21.1.3 联线321
21.1.4 使用故事板来实现表视图323
21.2 自定义切换效果324
21.2.1 还有一个优点325
21.2.2 白璧微瑕326
21.3 使用UIAppearance协议自定义视图326
21.4 小结327
21.5 扩展阅读327
21.5.1 苹果文档327
21.5.2 WWDC讲座327
21.5.3 其他资源327
第22章 Cocoa的大招:键值编码和观察328
22.1 键值编码328
22.1.1 用KVC赋值330
22.1.2 用键路径遍历属性331
22.1.3 KVC和容器类331
22.1.4 KVC和字典335
22.1.5 KVC和非对象336
22.1.6 用KVC实现高阶消息传递336
22.1.7 容器操作符336
22.2 键值观察337
22.2.1 KVO和容器类339
22.2.2 KVO是如何实现的340
22.3 KVO的权衡340
22.4 小结342
22.5 扩展阅读342
22.5.1 苹果文档342
22.5.2 其他资源342
第23章 不同凡想:块和函数式编程343
23.1 什么是块343
23.1.1 为什么要用函数式编程343
23.1.2 “函数式”UIAlertView344
23.2 声明块345
23.2.1 变量作用域346
23.2.2 栈与堆346
23.3 实现块347
23.4 块和并发349
23.4.1 GCD中的分派队列349
23.4.2 NSOperationQueue与GCD分派队列350
23.5 基于块的Cocoa方法351
23.5.1 UIView的动画使用块351
23.5.2 展示和移除视图控制器352
23.5.3 TweetComposer 与应用程序中发送邮件(短信)352
23.5.4 用NSDictionary的enum erationWithBlock遍历字典352
23.5.5 寻找基于块的方法353
23.6 支持情况353
23.7 小结353
23.8 扩展阅读354
23.8.1 苹果文档354
23.8.2 博客354
23.8.3 其他资源354
第24章 离线支持355
24.1 需要离线支持的原因355
24.2 缓存策略356
24.2.1 存储缓存356
24.2.2 缓存版本和失效359
24.3 数据模型缓存359
24.4 缓存版本控制363
24.5 创建内存缓存364
24.5.1 为AppCache设计内存缓存365
24.5.2 处理内存警告366
24.5.3 处理结束和进入后台通知367
24.6 创建URL缓存367
24.6.1 过期模型368
24.6.2 验证模型368
24.6.3 示例368
24.6.4 用URL缓存来缓存图片369
24.7 小结369
24.8 扩展阅读369
24.8.1 苹果文档369
24.8.2 书籍369
24.8.3 其他资源369
第25章 云端数据370
25.1 iCloud370
25.2 第三方云服务提供商372
25.3 Parse373
25.3.1 Parse入门373
25.3.2 Parse的顶层对象374
25.3.3 代码374
25.4 StackMob376
25.4.1 设置StackMob376
25.4.2 登录、上传和获取数据377
25.4.3 StackMob自定义代码377
25.5 后端即服务的缺点378
25.6 小结378
25.7 扩展阅读378
25.7.1 苹果文档378
25.7.2 WWDC讲座378
25.7.3 其他资源379
第26章 精妙的文本布局380
26.1 基本控件:字段、视图和标签380
26.2 UIKit中的富文本381
26.2.1 理解粗体、斜体和下划线381
26.2.2 属性化字符串382
26.2.3 段落样式384
26.2.4 属性化字符串和HTML384
26.3 用Web视图显示富文本385
26.3.1 在Web视图中显示和访问HTML385
26.3.2 响应用户交互386
26.3.3 在滚动视图和表格视图中绘制Web视图386
26.4 Core Text387
26.4.1 用CTFramesetter进行简单的布局387
26.4.2 为非连续路径创建框架388
26.4.3 排版器、文本行、连续文本和字形390
26.4.4 沿着曲线绘制文本391
26.5 小结395
26.6 扩展阅读395
26.6.1 苹果文档395
26.6.2 WWDC讲座395
26.6.3 其他资源396
第27章 创建Core Foundation应用397
27.1 Core Foundation类型397
27.2 命名和内存管理398
27.3 分配器399
27.4 内省400
27.5 字符串和数据400
27.5.1 常量字符串401
27.5.2 创建字符串401
27.5.3 转换为C字符串402
27.5.4 其他字符串操作符404
27.5.5 字符串的支持存储404
27.5.6 CFData405
27.6 容器类型405
27.6.1 CFArray406
27.6.2 CFDictionary406
27.6.3 CFSet和CFBag406
27.6.4 其他容器类型407
27.6.5 回调函数407
27.7 自由桥接408
27.8 小结411
27.9 扩展阅读411
27.9.1 苹果文档411
27.9.2 其他资源411
第28章 深度解析Objective-C 412
28.1 理解类和对象412
28.2 使用方法和属性414
28.3 消息传递如何工作416
28.3.1 动态实现417
28.3.2 快速转发419
28.3.3 普通转发422
28.3.4 转发失败422
28.3.5 各种版本的objc_msgSend423
28.4 方法混写423
28.5 ISA混写426
28.6 方法混写与ISA混写427
28.7 小结427
28.8 扩展阅读427
28.8.1 苹果文档427
28.8.2 其他资源428
索引429
《设计模式的艺术:软件开发人员内功修炼之道》内容简介:软件开发是一门技术,更是一门艺术。设计模式是面向对象软件开发的入门功
通用软件服装CAD 内容简介 《通用软件服装CAD》是一部计算机软件应用技术专著,本书既可用于高等学校服装专业教学,也可以指导服装设计与生产。本书详细研究探讨了...
Helveticaisasans-seriftypeface.Itissimpleandclean,andcommonlyseeninadvertising,s...
本书比较全面地介绍了网页设计应注意的相关问题,在网页设计基础方面着重讲解了网页框架、页面元素、色彩设计,分析了一些人们容
《网店运营、美工视觉、客服(入门版)》内容简介:CETC启蒙认证主要针对电子商务零基础人员及预备创业人员,以知识、理念普及和创
我的Photoshop学习手记 内容简介 本书以photoshopcs5为技术平台,精心设计了80多个案例,内容涵盖鼠绘、色彩调整、图像合成、特效制作、创意、抠...
《涡河边的老子》内容简介:《涡河边的老子》把《老子》放在淮河流域的背景下阅读,寻找、还原了它的地理土壤,放在散文随笔的形式
本书是计算理论方面的优秀教材之一,包括上下文无关文法、上下文无关文法范式、有限自动机、正则语言的性质、下推自动机和上下文
《文化的利用和再创造》内容简介:本书以区域宗教为研究对象,考察在儒学文化语境,天主教传入所带来的各种冲击,以及在基础上所形
Photoshop平面设计基础 本书特色 《Photoshop平面设计基础》由王艳娟主编,本书作者根据多年的教学经验并结合学生的特点和需求,编写这本教材。本教材...
《商品美工实训》内容简介:《商品美工实训》是一本岗位项目实训教材,本书根据电子商务公司美工部门的岗位设置和技能要求整合课程
51单片机应用从零开始 内容简介 8051单片机不仅是国内用得*多的单片机之一,同时也是*适合初学者入门学习的一款单片机。一旦用户对它的应用卜手之后,即能开发电...
《Fortran95程序设计》主要讲述了Fortran95程序设计的方法,包括数值计算、计算机绘图、窗口程序设计、与VisualC/VisualBasic/De
《App Inventor创意趣味编程进阶》内容简介:App Inventor是一款简单易上手的可视化安卓App开发工具,随着各种开源硬件和人工智能技
《Linux系统管理技术手册(第2版)》延续了《Linux系统管理技术手册(第2版)》前一版以及《uMx系统管理技术手册》的讲解风格,以当前
SQL Server 从入门到精通(配光盘)(软件开发视频大讲堂) 本书特色 明日科技编著的《SQL Server从入门到精通(附光盘SQL Server200...
Java程序员职场全攻略-从小工到专家 本书特色 懵懂菜鸟如何成长为一名成功的开发人员?如何在“血雨腥风”的求职大战中脱颖而出?职场中只要技术过硬就可以吃遍天下...
HCNP路由交换实验指南 修订版 本书特色 本书基于eNSP搭建企业网络真实场景,给出大量的配置实例,将真实场景与配置实例紧密结合,使读者能够快捷、直观、深刻地...
《三板斧:阿里巴巴管理之道》是一部探讨与总结阿里巴巴内部实战管理的书籍,它不是一个基于完备管理体系的理论,而是一套来自于
Thedefactostandard-amust-haveforallLISPprogrammers.Inthisgreatlyexpandededitiono...