摘要
本书为有经验的iOS开发者提供构建优异应用移动性能所需的开发建议和实践,帮助读者解决常见性能问题。
作者Gaurav Vaish从工程角度演示了编写优质代码的方法,详尽介绍如何设计和优化iOS应用,以便在网络较差、内存较低的情况下提供流畅的用户体验。书中还提供了可以反复使用的Objective-C代码,以及一些能够从众多应用中脱颖而出的高性能原生iOS应用。
概述跟踪应用性能时需要衡量的参数以及如何衡量性能。
通过最小化内存和功耗以及并发编程来编写高效应用,并探索一些相关选项。
优化应用的生命周期和UI,以及网络、数据共享和安全功能。
了解应用的测试、调试和分析工具,并监控应用
从真实用户处收集数据来分析应用的使用情况,找出瓶颈,并进行修复
高性能iOS应用开发 内容简介
性能对用户体验有着至关重要的影响。本书将介绍对用户体验产生负面影响的各个方面,并概述如何优化iOS应用的性能。全书共5个部分,主要从性能的衡量标准、对应用至关重要的核心优化点、iOS应用开发特有的性能优化技术以及性能的非代码方面,讲解了应用性能的优化问题。本书的主要目的是展示如何从工程学的角度编写优质代码。本书适合已经具有Objective-C和iOS实践经验的开发人员阅读。
高性能iOS应用开发 目录
译者序 xv
前言 xvii
第一部分 开始
第1 章 移动应用的性能 3
1.1 定义性能 3
1.2 性能指标 4
1.2.1 内存 4
1.2.2 电量消耗 4
1.2.3 初始化时间 4
1.2.4 执行速度 5
1.2.5 响应速度 5
1.2.6 本地存储 5
1.2.7 互操作性 6
1.2.8 网络环境 7
1.2.9 带宽 7
1.2.10 数据刷新 8
1.2.11 多用户支持 8
1.2.12 单点登录 9
1.2.13 安全 9
1.2.14 崩溃 10
1.3 应用性能分析 10
1.3.1 采样 10
1.3.2 埋点 10
1.4 测量 11
1.4.1 设置工程与代码 11
1.4.2 设置崩溃报告 12
1.4.3 对应用埋点 13
1.4.4 日志 17
1.5 小结 19
第二部分 核心优化
第2 章 内存管理 23
2.1 内存消耗 23
2.1.1 栈大小 24
2.1.2 堆大小 25
2.2 内存管理模型 27
2.3 自动释放对象 28
2.4 自动释放池块 30
2.5 自动引用计数 32
2.6 引用类型 35
2.6.1 变量限定符 36
2.6.2 属性限定符 37
2.7 实践环节 38
2.7.1 照片模型 38
2.7.2 更新故事板 38
2.7.3 方法实现 39
2.7.4 输出分析 41
2.8 僵尸对象 42
2.9 内存管理规则 43
2.10 循环引用 43
2.10.1 避免循环引用的规则 45
2.10.2 循环引用的常见场景 46
2.10.3 观察者 56
2.10.4 返回错误 59
2.11 弱类型:id 59
2.12 对象寿命与泄漏 61
2.13 单例 62
2.14 找到神秘的持有者 64
2.15 最佳实践 65
2.16 生产环境的内存使用情况 66
2.17 小结 67
第3 章 能耗 68
3.1 CPU 68
3.2 网络 70
3.3 定位管理器和GPS 73
3.3.1 最佳的初始化 74
3.3.2 关闭无关紧要的特性 75
3.3.3 只在必要时使用网络 76
3.3.4 后台定位服务 77
3.3.5 NSTimer、NSThread 和定位服务 77
3.3.6 在应用关闭后重启 78
3.4 屏幕 78
3.4.1 动画 78
3.4.2 视频播放 78
3.4.3 多屏幕 79
3.5 其他硬件 83
3.6 电池电量与代码感知 83
3.7 分析电量使用 85
3.8 最佳实践 86
3.9 小结 88
第4 章 并发编程 89
4.1 线程 89
4.2 线程开销 90
4.2.1 内核数据结构 90
4.2.2 栈空间 90
4.2.3 创建耗时 90
4.3 GCD 91
4.4 操作与队列 92
4.5 线程安全的代码 93
4.5.1 原子属性 93
4.5.2 同步块 94
4.5.3 锁 96
4.5.4 将读写锁应用于并发读写 100
4.5.5 使用不可变实体 102
4.5.6 使用集中的状态更新服务 106
4.5.7 状态观察者与通知 110
4.5.8 异步优于同步 114
4.6 小结 116
第三部分 iOS 性能
第5 章 应用的生命周期 119
5.1 应用委托 119
5.2 应用启动 121
5.2.1 首次启动 123
5.2.2 冷启动 129
5.2.3 热启动 135
5.2.4 升级后启动 137
5.3 推送通知 138
5.3.1 远程通知 138
5.3.2 本地通知 141
5.4 后台拉取 142
5.5 小结 144
第6 章 用户界面 145
6.1 视图控制器 146
6.1.1 视图加载 149
6.1.2 视图层级 150
6.1.3 视图可见性 152
6.2 视图 154
6.2.1 UILabel 155
6.2.2 UIButton 156
6.2.3 UIImageView 157
6.2.4 UITableView 158
6.2.5 UIWebView 161
6.2.6 自定义视图 164
6.3 自动布局 170
6.4 尺寸类别 171
6.5 iOS 8 中新的交互特性 175
6.5.1 交互式通知 175
6.5.2 应用扩展 176
6.6 小结 179
第7 章 网络 180
7.1 指标和测量 180
7.1.1 DNS 查找时间 181
7.1.2 SSL 握手时间 182
7.1.3 网络类型 183
7.1.4 延迟 188
7.1.5 网络API 190
7.2 应用部署 190
7.2.1 服务器 191
7.2.2 请求 191
7.2.3 数据格式 192
7.3 工具 193
7.3.1 网络链接调节器 193
7.3.2 AT & T 应用资源优化器 194
7.3.3 Charles 196
7.4 小结 199
第8 章 数据共享 200
8.1 深层链接 200
8.2 剪贴板 205
8.3 共享内容 208
8.3.1 文档交互 209
8.3.2 活动 215
8.4 iOS 8 扩展 217
8.4.1 配置操作扩展和共享扩展 219
8.4.2 操作扩展 220
8.4.3 共享扩展 221
8.4. 4 文档提供者扩展 223
8.4.5 应用群组 228
8.5 小结 230
第9 章 安全 231
9.1 应用访问 232
9.1.1 匿名访问 232
9.1.2 认证访问 234
9.2 网络安全 237
9.2.1 使用HTTPS 237
9.2.2 使用证书锁定 238
9.3 本地存储 242
9.4 数据共享 248
9.5 安全和应用性能 248
9.6 清单 248
9.7 小结 250
第四部分 代码之外
第10 章 测试及发布 253
10.1 测试类型 253
10.2 定义 254
10.3 单元测试 255
10.3.1 设置 255
10.3.2 编写单元测试 256
10.3.3 代码覆盖率 258
10.3.4 异步操作 262
10.3.5 Xcode 6 福利:性能单元测试 263
10.3.6 模拟依赖 265
10.3.7 其他框架 268
10.4 功能测试 268
10.4.1 设置 269
10.4.2 编写功能测试 271
10.4.3 工程结构 273
10.5 隔离依赖 274
10.6 测试及组件设计 275
10.7 持续集成与自动化 277
10.8 最佳实践 278
10.9 小结 282
第11 章 工具 283
11.1 Accessibility Inspector 283
11.1.1 Xcode Accessibility Inspector 284
11.1.2 iOS Accessibility Inspector 285
11.2 Instruments 288
11.2.1 使用Instruments 289
11.2.2 活动监视器 291
11.2.3 内存分配 292
11.2.4 内存泄漏 295
11.2.5 网络 296
11.2.6 时间分析器 297
11.3 Xcode 视图调试器 298
11.4 PonyDebugger 300
11.5 Charles 304
11.6 小结 309
第12 章 埋点与分析 310
12.1 词汇 310
12.2 埋点 312
12.2.1 规划 312
12.2.2 实现 314
12.2.3 部署 316
12.3 分析 317
12.4 真实用户监控 317
12.4.1 分析与真实用户监控对比 317
12.4.2 使用真实用户监控 318
12.5 小结 318
第五部分 iOS 9
第13 章 iOS 9 321
13.1 应用的生命周期 321
13.1.1 通用链接 322
13.1.2 搜索 324
13.1.3 搜索最佳实践 328
13.2 用户界面 329
13.2.1 UIKit 框架 330
13.2.2 Safari 服务框架 332
13.3 扩展 335
13.3.1 内容拦截扩展 336
13.3.2 Spotlight 索引扩展 338
13.4 应用瘦身 339
13.4.1 分割 339
13.4.2 按需加载资源 340
13.4.3 bitcode 343
13.5 小结 344
第14 章 iOS 10 345
14.1 Siri 扩展 346
14.2 改进的通知 348
14.2.1 申请权限 348
14.2.2 触发器 348
14.2.3 为通知添加交互 349
14.2.4 完全自定义展示通知 350
14.2.5 通知服务扩展 352
14.3 iMessage 扩展 354
14.4 VoIP 支持 357
作者介绍 359
封面介绍 359
高性能iOS应用开发 精彩文摘
1.1 定义性能
从技术视角严格来说,性能是非常模糊的术语。当一个人说“这是个高性能的应用”时,其实我们无从判断他说的是什么。他是说应用消耗的内存少?应用节约了网络流量?还是说应用使用起来非常流畅?总而言之,高性能有着多重的含义和丰富的解释方式。
本文来自挽梦忆笙歌投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。