IOS 项目性能优化

iOS 项目性能优化

    • 一, iOS 性能优化概述
      • 1. 项目多余图片资源释放
      • 2. 缓存图片优化
      • 3. 界面卡顿优化
      • 4.列表中阴影和圆角的处理
      • 5. 代码优化
      • 6. 安装包塑身

一, iOS 性能优化概述

  • 项目多余的图片资源需要释放
  • 选择是否缓存图片. 对imageName方法的使用判断
  • 界面卡顿优化
  • 列表中阴影和圆角的处理
  • 代码优化
  • 安装包塑身

1. 项目多余图片资源释放

分析工具LSUnusedResources的使用
整个本地图片资源30M以上, 占用较大空间
大概3M的本地图片资源从来没被使用

2. 缓存图片优化

常见的从bundle中加载图片的方式有两种,一个是用UIImageName,二是用imageWithContentOfFile,第一种比较常见一点。imageNamed的优点是当加载时会缓存图片。可以参考苹果官方文档imageNamed的文档,

3. 界面卡顿优化

卡顿原因分析:

  • Kingfisher框架的使用导致的内存暴涨
  • 后台返回的高清大图影响
  • layoutSubviews和cell赋值数据的时候处理大量逻辑

解决方法:
设置缓存大小,定时清理缓存
IOS 项目性能优化_第1张图片

1.设置最大缓存容量

IOS 项目性能优化_第2张图片

2.页面销毁的时候恢复, 并且删除menoryCache
IOS 项目性能优化_第3张图片

3.把layoutSubviews的部分设置放到awakeFromNib
IOS 项目性能优化_第4张图片

4.减少cell赋值数据的时候做过多耗时逻辑

IOS 项目性能优化_第5张图片

4.列表中阴影和圆角的处理



可以发现现在滚动的性能大大提高了,光栅化对于那些有很多子view嵌套在一起、view的层级复杂或者有很复杂特效效果的图层有很明显的提升,因为这些内容都被缓存到位图当中了。但是使用光栅化需要注意一些内容:

  • 适用于内容基本不变的图层
    假如图层的内容经常变化,比如cell里面有涉及到动画之类的,那么缓存的内容就无效了,GPU需要重新创建缓存区,导致离屏渲染,这又涉及到OpenGL的上下文环境切换,反而降低性能。

  • 不要过度使用
    缓存区的大小被设置为屏幕大小的2.5倍,假如过分使用同样会导致大量的离屏渲染。

  • 如果缓存的内容超过100ms没有被使用则会被回收。

5. 代码优化

  • 方法抽取
  • tableView布局优化

  • cell注册完善

6. 安装包塑身

你可能感兴趣的:(IOS项目性能优化)