我有一个单独的线程创建一个UIView对象,将其插入UITableView的数据源,然后在UITableView上调用reloadData。但是,由于它是一个单独的线程,它不能直接调用reloadData,它需要让mainthread执行它...但是你怎么告诉mainthread这样做呢?
由于
答案 0 :(得分:21)
[self.tableView performSelectorOnMainThread:@selector(reloadData)
withObject:nil
waitUntilDone:NO];
答案 1 :(得分:7)
您可以使用dispatch async,此方法允许您将工作线程编组到内联代码块而不是使用performSelectorOnMainThread的方法:
{{1}}
答案 2 :(得分:1)
这样的事情怎么样? (可能无法编译,我正在输入)
- (void) callReloadData
{
if ([NSThread isMainThread]) {
@synchronized (self.tableView) {
[self.tableView reloadData];
}
} else {
[self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}
}