iOS - 另一个线程需要将reloadData发送到mainthread

时间:2011-10-27 09:54:39

标签: ios multithreading uitableview uiview reloaddata

我有一个单独的线程创建一个UIView对象,将其插入UITableView的数据源,然后在UITableView上调用reloadData。但是,由于它是一个单独的线程,它不能直接调用reloadData,它需要让mainthread执行它...但是你怎么告诉mainthread这样做呢?

由于

3 个答案:

答案 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];
    }
}