iOS 列表卡顿优化记录

首先介绍出现问题场景:
实时聊天的群聊列表,消息过来会进行频繁刷新,在压力测试下,大约0.5s会刷新一次。列表中包含消息过滤,还有定位到底部及消息提醒等相关判断。当列表处于底部上拉过程中会出现列表卡顿情况。最开始判断可能是由于系统的滚动到底部方法和滚动手势冲突引起的,于是打算换滚动到底部的实现:将scrollToRow方法替换为setContent(不得不说这个Api很难使)。虽然卡顿没那么厉害了,但是结果实现效果并不理想,定位经常不准确。于是开始使用Instruments查找卡顿原因

iOS 列表卡顿优化记录_第1张图片
2020417183733dama.png

通过图片可以看到大部分的cpu消耗都用在了频繁的算高上。由于列表中包含富文本计算,所以无法完全手动算高,于是固定高度cell不再采用添加约束自动算高的方式,并采用在模型中缓存列表高度的方式,进行自动算高的优化。流畅度明显提升,不再卡顿。

总结:自动算高使用需谨慎

你可能感兴趣的:(iOS 列表卡顿优化记录)