最近读《高性能iOS应用开发》一书,重新了解了下iOS中内存模型与一些开发中注意事项,并摘抄书中知识点做了下笔记,另外原来不了解方面知识也做了相关资料搜索作笔记补充。(如有错误欢迎指正)
一. 开始
1. 移动应用的性能
1.1 定义性能
性能是非常模糊的术语,高性能有着多重的含义和丰富的解释方式。(需要测量和监控的)性能指标是其中的 一个关注点,(实际上收集数据的)测量是另一个关注点。
1.2 性能指标
性能指标是面向用户的各种属性。每个属性可能是一个或多个可测量工程参数的一个要素。
1.2.1 内存
内存涉及运行应用所需的 RAM 最小值,以及应用消耗的内存平均值和峰值。最小内存值 会严重限制硬件,而更高的内存平均值和峰值意味着更多的后台应用会被强制关闭。
同时还要确保没有泄漏内存。随时间流逝而持续增长的内存消耗意味着,应用很可能会因 为内存不足的异常而崩溃。
1.2.2 电量消耗
电量消耗不仅仅与计算 CPU 周期有关,还包括高效地使用硬件。除了要实现电量消耗最小化,还要确保不会影响用户体验。
1.2.3 初始化时间
应用在启动时应执行刚好够用的任务以完成初始化,从而满足用户的使用需求。执行这些 任务消耗的时间就是应用的初始化时间。 刚好够用是一个开放式用语——正确的平衡点取 决于应用的需要。
1.2.4 执行速度
一旦启动应用,用户总是希望它可以尽可能快地工作。一切必要的处理都应该在尽可能短 的时间内完成。
1.2.5 响应速度
每个应用都应该快速地响应用户交互。在应用中所做的一切优化和权衡最终都应该体现在 响应速度上。
1.2.6 本地存储
针对任何在服务器上存储数据或通过外部来源刷新数据的应用,开发人员应该对本地存储 的使用有所规划,以便应用具备离线浏览的能力。如果你的应用使用了本地存储,那么请提供一个清除数据的选项。
1.2.7 互操作性
用户可能会使用多个应用来完成某个任务,这就需要这些应用直接提供互操作的能力。
1.2.8 网络环境
移动设备会在不同网络环境下使用。为了确保能够提供最好的用户体验,你的应用应当适 应各种网络条件:
高带宽稳定网络
低带宽稳定网络
高带宽不稳定网络
低带宽不稳定网络
无网络
1.2.9 安全
安全对移动应用来说是最重要的,因为敏感信息可能会在应用间共享。因此,对所有通信 以及本地数据和共享数据进行加密就显得尤为重要了。
实现安全需要更多的计算、内存和存储,但这与最大化运行速度、最小化内存和存储使用 的目标相冲突。