我正在使用UITableView来实现控制台输出之类的东西。我从不调用reloadData,只调用最后一行的insertRowsAtIndexPaths和reloadRowsAtIndexPaths。
我的问题是,当表格超过100行时,应用程序变得完全没有响应。我的应用程序喷出的大量数据少于一分钟。在此期间,UITableView的更新速度低于每秒帧数。
void Log(const char* str)
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^
{
// insertRowsAtIndexPaths or reloadRowsAtIndexPaths (both withRowAnimation:UITableViewRowAnimationNone)
}
}
如果重要,我的表是用代码创建的:
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
cell.textLabel.font = [UIFont fontWithName:@"Courier New" size:8];
}
我正在使用固定的rowHeight。
答案 0 :(得分:3)
通常更有效的是在批处理中的单独线程上更新基础数据,并在主线程上定期调用[tableView reloadData]
(在定义的更新或时间之后)。
如果您有太多更新,那么始终在主要辅助线程之间切换会对性能造成不利影响。