一, iOS 性能优化概述
- 项目多余的图片资源需要释放
- 选择是否缓存图片. 对imageName方法的使用判断
- 界面卡顿优化
- 列表中阴影和圆角的处理
- 代码优化
- 安装包塑身
1. 项目多余图片资源释放
分析工具LSUnusedResources的使用
整个本地图片资源30M以上, 占用较大空间
大概3M的本地图片资源从来没被使用
2. 缓存图片优化
常见的从bundle中加载图片的方式有两种,一个是用UIImageName,二是用imageWithContentOfFile,第一种比较常见一点。imageNamed
的优点是当加载时会缓存图片。可以参考苹果官方文档imageNamed的文档,
3. 界面卡顿优化
卡顿原因分析:
- Kingfisher框架的使用导致的内存暴涨
- 后台返回的高清大图影响
- layoutSubviews和cell赋值数据的时候处理大量逻辑
解决方法:
设置缓存大小,定时清理缓存
1.设置最大缓存容量
2.页面销毁的时候恢复, 并且删除menoryCache
3.把layoutSubviews的部分设置放到awakeFromNib
4.减少cell赋值数据的时候做过多耗时逻辑
4.列表中阴影和圆角的处理
可以发现现在滚动的性能大大提高了,光栅化对于那些有很多子view嵌套在一起、view的层级复杂或者有很复杂特效效果的图层有很明显的提升,因为这些内容都被缓存到位图当中了。但是使用光栅化需要注意一些内容:
-
适用于内容基本不变的图层
假如图层的内容经常变化,比如cell里面有涉及到动画之类的,那么缓存的内容就无效了,GPU需要重新创建缓存区,导致离屏渲染,这又涉及到OpenGL的上下文环境切换,反而降低性能。 -
不要过度使用
缓存区的大小被设置为屏幕大小的2.5倍,假如过分使用同样会导致大量的离屏渲染。 -
如果缓存的内容超过100ms没有被使用则会被回收。
5. 代码优化
- 方法抽取
- tableView布局优化
- cell注册完善
6. 安装包塑身
来源:CSDN
作者:极客雨露
链接:https://blog.csdn.net/kyl282889543/article/details/93589948