iOS卡顿优化

2020-10-13  本文已影响0人  Mannyao

https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/

启动优化:
main函数之前
1.合并动态库,减少不必要的framework,特别是第三方的。因为动态链接比较耗时。

  1. 删减一些无用的静态变量
  2. 删减没有被调用到或者已经废弃的方法
  3. 将不必须在+load方法中做的事情延迟到+initialize中

main函数之后:

  1. 尽量使用纯代码编写,减少xib的使用;
  2. 启动阶段的网络请求,是否都放到异步请求;
  3. 避免在主线程进行大量的计算,将与首屏无关的计算内容放在页面展示后进行,缩短 CPU 计算时间
  4. 避免使用大图片,减少视图数量及层级,减轻 GPU 的负担
  5. 只请求首屏相关的网络数据
  6. 本地缓存首屏数据,待渲染完成后再去请求新数据。

卡顿优化:
CPU:

  1. 尽量用轻量级的对象,比如用不到事件处理的地方使用CALayer取代UIView
  2. 尽量提前计算好布局(例如cell行高)
  3. 控制一下线程的最大并发数量
  4. 尽量把耗时的操作放到子线程
  5. 高度缓存: 在tableView滑动时,会不断调用heightForRowAtIndexPath:,当 cell 高度需要自适应时,每次回调都要计算高度,会导致 UI 卡顿。为了避免重复无意义的计算,需要缓存高度。
  6. 按需加载: 局部刷新,刷新一个cell就能解决的,坚决不刷新整个 section 或者整个tableView,刷新最小单元元素。 利用runloop提高滑动流畅性,在滑动停止的时候再加载内容,像那种一闪而过的(快速滑动),就没有必要加载,可以使用默认的占位符填充内容。
    GPU:
  7. 尽量避免短时间内大量图片的显示,尽可能将多张图片合成一张进行显示
  8. 尽量避免出现离屏渲染.
  9. 图片显示原始大小

内存优化?

上一篇下一篇

猜你喜欢

热点阅读