在5分钟UI冻结后,经常(每秒)调用一次
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
答案 0 :(得分:0)
reloadData
不会异步运行。这意味着虽然您在主线程上执行它是正确的(所有UI更新应该在主线程上发生),但主线程将挂起,直到重新加载视图。你这么频繁地调用它,以至于在某些时候重新加载的请求开始堆叠在彼此之上,因为它在完成之前已经被再次调用。这是主线程锁定并且你的UI冻结的时候。
您可以强制线程等待重新加载,然后使用
执行另一个[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
但我会提醒你这样做。相反,重新考虑一下你为什么每秒钟重新加载一张桌子。