我正在修改一些现有的笨重代码,该代码仅在任何更改时调用
代码会导致tableView请求所有内容:
我可以切换回去,看行为是否发生变化。非常令人沮丧。有什么想法吗?
专门添加奖励以查看是否有更多的洞察力。
beginUpdates/endUpdates不会影响任何内容,我也不希望它这样做,这只是一个命令,没有任何额外的内容需要合并到单个更新中。
我认为这只是渴望动画的副作用。要让所有内容“滑入”,必须有所有内容进行渲染。游戏结束。
[tableView reloadData]
,以使用更具体的表格更新和插入/删除方法。然而,在这样做时,我遇到了一些非常糟糕的行为。以前,正如你所想象的那样,当表格加载时,它仅请求当前可见的行的单元格。当使用reloadData
时,这是行为。现在,调用insertSections
后,将请求所有单元格,可能会有数百个。这导致为每一行创建单元格,完全破坏可重用单元格队列,只是浪费时间。我必须做错了什么。更改很简单,代码结果只要求可见行:- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
// ... ensure it's the right key
[tableView reloadData];
}
代码会导致tableView请求所有内容:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
// ... ensure it's the right key
NSUInteger sectionCount = [self sectionCount];
NSIndexSet *indices = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, sectionCount)];
[tableView insertSections:indices withRowAnimation:UITableViewRowAnimationFade];
}
我可以切换回去,看行为是否发生变化。非常令人沮丧。有什么想法吗?
专门添加奖励以查看是否有更多的洞察力。
beginUpdates/endUpdates不会影响任何内容,我也不希望它这样做,这只是一个命令,没有任何额外的内容需要合并到单个更新中。
我认为这只是渴望动画的副作用。要让所有内容“滑入”,必须有所有内容进行渲染。游戏结束。