如何告诉UITableView预加载所有行?

时间:2010-05-28 17:28:56

标签: iphone objective-c uitableview custom-cell

有没有办法告诉UITableView预加载所有行?

tableView应该显示多条评论(最多80条评论)。

所以我的CommentCell使用Setter来调整单元格的特定注释。

-(void)setComment:(Comment *)newComment {
 if (newComment != comment) {
     [comment release];
        comment = [newComment retain]; 
       /*
        * set the cells view variables here
        */
    }
}  

这个特定的setter占用了大量的处理资源,滚动变得有点滞后。

我在调用

时使用特定于注释的reuseIdentifier而不是静态cellIdentifier
dequeueReusableCellWithIdentifier:

为了确保“newComment”等于旧的“评论” 事实上,当滚动已经加载的单元格时,这确实很有效。

但是当第一次滚动评论时,它仍然落后于地狱。

这引出了我的问题:
有没有办法告诉tableview预加载所有单元格? (我怀疑)

我是否必须实现自己的缓存而不是依赖“dequeueReusableCellWithIdentifier:”?

2 个答案:

答案 0 :(得分:2)

请记住,您的评论特定的reuseIdentifier可能是导致一切变慢的原因(或者至少,它没有帮助)。我们为UITableViewCells使用reuseIdentifier的原因是因为如果你每次需要时都尝试分配一个新的单元格,那么它就像你只能重用已经制作的单元格那样高效。

我建议您预先计算您的评论,这样您就可以设置细胞的属性,并在滚动桌面视图后重复使用单元格。

答案 1 :(得分:1)

不,您必须在dataSource中预加载数据。只需将您需要的所有内容放入数组中,然后从预先加载的对象数组中填充表格的单元格。