iOS卡顿优化
2020-10-13 本文已影响0人
Mannyao
https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/
启动优化:
main函数之前
1.合并动态库,减少不必要的framework,特别是第三方的。因为动态链接比较耗时。
- 删减一些无用的静态变量
- 删减没有被调用到或者已经废弃的方法
- 将不必须在+load方法中做的事情延迟到+initialize中
main函数之后:
- 尽量使用纯代码编写,减少xib的使用;
- 启动阶段的网络请求,是否都放到异步请求;
- 避免在主线程进行大量的计算,将与首屏无关的计算内容放在页面展示后进行,缩短 CPU 计算时间
- 避免使用大图片,减少视图数量及层级,减轻 GPU 的负担
- 只请求首屏相关的网络数据
- 本地缓存首屏数据,待渲染完成后再去请求新数据。
卡顿优化:
CPU:
- 尽量用轻量级的对象,比如用不到事件处理的地方使用CALayer取代UIView
- 尽量提前计算好布局(例如cell行高)
- 控制一下线程的最大并发数量
- 尽量把耗时的操作放到子线程
- 高度缓存: 在tableView滑动时,会不断调用heightForRowAtIndexPath:,当 cell 高度需要自适应时,每次回调都要计算高度,会导致 UI 卡顿。为了避免重复无意义的计算,需要缓存高度。
- 按需加载: 局部刷新,刷新一个cell就能解决的,坚决不刷新整个 section 或者整个tableView,刷新最小单元元素。 利用runloop提高滑动流畅性,在滑动停止的时候再加载内容,像那种一闪而过的(快速滑动),就没有必要加载,可以使用默认的占位符填充内容。
GPU: - 尽量避免短时间内大量图片的显示,尽可能将多张图片合成一张进行显示
- 尽量避免出现离屏渲染.
- 图片显示原始大小
内存优化?