为了账号安全,请及时绑定邮箱和手机立即绑定

怎样才能提升tableview的滑动性能呢?需要注意什么?

怎样才能提升tableview的滑动性能呢?需要注意什么?

繁华开满天机 2023-04-17 21:17:23
有关UITableView滑动时卡顿的问题,目前了解到的一些原因主要是:1)主线程被阻塞(采用异步下载图片可以解决),2)cell重用机制使用问题(一般情况都已注意cell的重用),但除了以上问题,我们在优化tableview的时候,还需要注意什么,怎样才能提升tableview的滑动性能,另外,有什么工具可以定量的分析tableview的滑动性能,希望有这方面经验的同学可以解答一下,多谢~
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

其实要解决TableView的性能主要是理解其原理。

首先TableView本身是一个滑动窗口,并不会一次实例化好所有的Cell,因为内存消耗过大,比如tableView:numberOfRowsInSection:返回1000,总不能实例化1000个CellView吧,这就是楼主说的第二个问题:Cell重用机制——一定要重用,且一定要正确的重用

Cell重用之后TableView就只实例化那么几个屏幕可见的CellView(例如5个),当用户滑动时反复的调用tableView:cellForRowAtIndexPath:来变更这几个CellView上的内容以达到滑动效果(还有几个其他的方法可以自己打log查看)。
所以对于滑动性能分析,楼主无需工具,只需自己NSLog一下方法执行时间即可完成滑动性能分析。
同样要解决滑动性能问题,只要保证这几个方法中的执行足够快即可:要尽可能的优化,所有无关逻辑都尽量扔出去。

关于常见场景:大IO、复杂算法、大量创建对象、大量添加View等等都有可能消耗性能。不过常见的case一般都是IO,比如楼主说的下载图片。
除了使用异步下载之外,还需要注意异步下载的状态,因为建立连接也是需要消耗资源的,虽非当前线程资源,但整个设备的资源依然是有限的,如果你同时建立上百个异步下载连接(例如用户滑动经过了上百条Cell),系统也会卡顿,这也是需要注意的


查看完整回答
反对 回复 2023-04-20
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信