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

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

繁华开满天机
浏览 87回答 1
1回答

慕虎7371278

其实要解决TableView的性能主要是理解其原理。首先TableView本身是一个滑动窗口,并不会一次实例化好所有的Cell,因为内存消耗过大,比如tableView:numberOfRowsInSection:返回1000,总不能实例化1000个CellView吧,这就是楼主说的第二个问题:Cell重用机制——一定要重用,且一定要正确的重用Cell重用之后TableView就只实例化那么几个屏幕可见的CellView(例如5个),当用户滑动时反复的调用tableView:cellForRowAtIndexPath:来变更这几个CellView上的内容以达到滑动效果(还有几个其他的方法可以自己打log查看)。所以对于滑动性能分析,楼主无需工具,只需自己NSLog一下方法执行时间即可完成滑动性能分析。同样要解决滑动性能问题,只要保证这几个方法中的执行足够快即可:要尽可能的优化,所有无关逻辑都尽量扔出去。关于常见场景:大IO、复杂算法、大量创建对象、大量添加View等等都有可能消耗性能。不过常见的case一般都是IO,比如楼主说的下载图片。除了使用异步下载之外,还需要注意异步下载的状态,因为建立连接也是需要消耗资源的,虽非当前线程资源,但整个设备的资源依然是有限的,如果你同时建立上百个异步下载连接(例如用户滑动经过了上百条Cell),系统也会卡顿,这也是需要注意的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java