0

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

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

所以我的 CommentCell 使用 Setter 使单元格适应特定的评论。

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

这个特定的 setter 需要相当多的处理资源,并且滚动有点滞后。

我在调用时使用的是特定于注释的重用标识符而不是静态单元标识符

dequeueReusableCellWithIdentifier:

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

但是当第一次滚动浏览评论时,它仍然像地狱一样滞后。

这引出了我的问题:
有没有办法告诉 tableview 预加载所有单元格?(我对此表示怀疑)
还是
我必须实现自己的缓存而不是依赖“dequeueReusableCellWithIdentifier:”?

4

2 回答 2

2

请记住,您的评论特定的重用标识符可能是导致一切变慢的原因(或者至少,它没有帮助)。我们将重用标识符用于 UITableViewCells 的原因是,如果您每次需要一个新单元时都尝试分配一个新单元,它的性能不如您可以重用一个已经创建的单元。

我建议预先计算您的评论,这样您就可以设置单元格的属性并在它们滚动出表格视图后重用单元​​格。

于 2010-05-28T18:27:03.463 回答
1

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

于 2010-05-28T17:36:57.717 回答