iOS - another thread needs to send reloadData to t

2019-01-19 01:30发布

I got a separate thread that creates a UIView object, inserts it into the UITableView's data source and then call reloadData on the UITableView. However, since it is a separate thread, it cannot call reloadData directly, it needs to make the mainthread do it... but how do you tell the mainthread to do it?

Thanks

3条回答
成全新的幸福
2楼-- · 2019-01-19 02:06

How about something like this? (may not compile, I am typing it out)

- (void) callReloadData
{
    if ([NSThread isMainThread]) {
        @synchronized (self.tableView) {
            [self.tableView reloadData];
        }
    } else {
        [self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
    }
}
查看更多
放荡不羁爱自由
3楼-- · 2019-01-19 02:10

You can use dispatch async, this method allows you to marshal worker thread to blocks of in-line code rather than methods using performSelectorOnMainThread:

dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableview reloadData];
});'
查看更多
不美不萌又怎样
4楼-- · 2019-01-19 02:24
[self.tableView performSelectorOnMainThread:@selector(reloadData)
                                 withObject:nil
                              waitUntilDone:NO];
查看更多
登录 后发表回答