UI卡顿问题

2023-12-14 04:59:45

1、 监测卡顿的方式
a、Xcode 层级关系是否有异常
b、 instruments 的Animation Hitch工具检测:碰到问题,录制完了无数据(用iphone7录制有数据的,iphne14录制无数据?)

2、可能导致的卡顿的原因
a、 直播广场列表一直往下刷新内存会爆掉,可能存在内存泄漏,需要进一步看看
1、 可以用内存工具检测看看有没有异常
2、 看代码里有没有循环引用(结合撒伽师兄那天给的日志)
b、 cell上的lottie动画可能导致卡顿
c、 进一步看看还有没有其他可能导致卡顿的代码
1、 阴影、圆角设置的方式
2、 离屏渲染的问题
3、 光栅化设置
4、 图片缓存占用太多内存
5、 图片是否还有压缩的空间
6、 cell上有大量的removeFromSuperView可能导致卡顿,代码可以优化(是为了避免数据重复,在prepareForReuse里使用,可以换成在这里刷新数据???)
d、 检查是否有线程不合理问题
1、 主线程耗时任务,比如调用UIGraphicsGetCurrentContext等接口在 CPU 上进行绘制计算
2、 主线程等待繁忙的子线程或低优先级的后台线程任务而导致阻塞
3、 主线程等待系统资源,比如使用Data(contentsOf:)进行 IO 读取等

问题记录
1、preview类型数据没有自测过,记得mock数据自测
2、有recommend的数据也没自测过

待解决的问题
1、找到检测卡顿的工具 —— instruments的animation hitch可以录制了

新发现
1、同一父视图重复调用addSubviews添加同一个View并不会产生多层级

重构心得
1、 抓住主要问题,先重构大量removeFromSuperView问题
2、 从最上层开始重构,重构玩一个单元,进行一次自测
3、 从关键方法入手分析

后记

卡顿分析相关参考文档

Instruments性能检测
https://www.jianshu.com/p/9e94e42cfb01

Animation Hitch:
https://www.jianshu.com/p/158a8497fe1c
https://juejin.cn/post/7231731488928399415
https://zhuanlan.zhihu.com/p/428971055?utm_id=0

iOS卡顿检测:
https://www.jianshu.com/p/ee62bbf38559

UICollectionView复用:
https://www.jianshu.com/p/5d817ea3565d
https://www.jianshu.com/p/e55178fd1e7f

dispatch_sync_on_main_queue:
https://www.jianshu.com/p/b3227582037d

文章来源:https://blog.csdn.net/weixin_45157020/article/details/134979529
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。