经常重新加载UITableview每秒冻结UI

时间:2017-02-06 11:22:44

标签: ios objective-c tableview

在5分钟UI冻结后,经常(每秒)调用一次

dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
});

1 个答案:

答案 0 :(得分:0)

reloadData不会异步运行。这意味着虽然您在主线程上执行它是正确的(所有UI更新应该在主线程上发生),但主线程将挂起,直到重新加载视图。你这么频繁地调用它,以至于在某些时候重新加载的请求开始堆叠在彼此之上,因为它在完成之前已经被再次调用。这是主线程锁定并且你的UI冻结的时候。

您可以强制线程等待重新加载,然后使用

执行另一个
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];

但我会提醒你这样做。相反,重新考虑一下你为什么每秒钟重新加载一张桌子。