自定义UIView与延迟加载滚动太慢

时间:2012-01-06 03:14:51

标签: ios performance uitableview uiview lazy-loading

所以,我目前有一个GridView类,它本质上就是这样。它是UIView的一个子类,它有一个暂存区域,其中有一堆子视图以类似网格的方式放置。 GridView的每个单元格都是一个自定义的UIView子类,它调用drawRect。

我按照UITableView模式实现了延迟加载。我只加载并添加了可见的网格单元格(每侧+/- 2个单元格)。随着视图的滚动,我会缓存NSMutableSet中不再可见的单元格,并重新使用该集合中的单元格来构建现在可见的单元格。关于它的一切似乎工作正常,因为我已经测试并分析它,没有内存泄漏。

问题是滚动太慢/不稳定。用户滚动的速度越快,它的速度越快。有时,如果你滚动得非常快,它会抛出一个内存警告。经过一些调试工作,我发现当它开始冻结和抽搐时,gridview中的子视图不会被删除,就像它们应该

我还注意到iPad 1与iPad 2的滚动速度明显较慢。

我的问题是,有没有人对如何处理这个有任何想法?任何技巧或优化来阻止滚动的生涩?在这一点上任何事情都会有所帮助,因为我一直在努力解决这个问题2天。提前致谢

1 个答案:

答案 0 :(得分:0)

可能的减速原因:1)drawRect 2)在用户启用的活动界面期间缓存

选择a)预加载,然后呈现平滑界面,或b)在背景中加载东西时进行平滑滚动,加载正在进行的空白区域?

调试:您是否尝试在此过程中执行NSLog,例如对于每个缓存调用,看看它是否正在执行大量不必要的工作?