您好,匿名用户
随意问技术百科期待您的加入

UITableView性能优化的问题

+1 投票

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

用户头像 提问 2012年 12月1日 @ Wukong 上等兵 (475 威望)
分享到:

1个回答

0 投票

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

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

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

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

用户头像 回复 2012年 12月1日 @ Evelynn 上等兵 (244 威望)
提一个问题:

相关问题

0 投票
1 回复 214 阅读
用户头像 提问 2012年 12月1日 @ Lucia 上等兵 (416 威望)
+3 投票
1 回复 153 阅读
0 投票
1 回复 49 阅读
+1 投票
1 回复 45 阅读
用户头像 提问 2012年 12月1日 @ Annie 上等兵 (299 威望)
0 投票
1 回复 41 阅读
用户头像 提问 2012年 12月1日 @ Ziggs 上等兵 (345 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...