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

发布于 2024-12-12 14:53:58 字数 163 浏览 4 评论 0原文

我有一个单独的线程,它创建一个 UIView 对象,将其插入到 UITableView 的数据源中,然后在 UITableView 上调用 reloadData。但是,由于它是一个单独的线程,所以它不能直接调用reloadData,它需要让主线程去做......但是你如何告诉主线程去做呢?

谢谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷途知返 2024-12-19 14:53:59

您可以使用dispatch async,此方法允许您将工作线程编组到内联代码块,而不是使用performSelectorOnMainThread的方法:

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

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];
});'
疯狂的代价 2024-12-19 14:53:59

像这样的事情怎么样? (可能无法编译,我正在打字)

- (void) callReloadData
{
    if ([NSThread isMainThread]) {
        @synchronized (self.tableView) {
            [self.tableView reloadData];
        }
    } else {
        [self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
    }
}

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];
    }
}
谎言月老 2024-12-19 14:53:58
[self.tableView performSelectorOnMainThread:@selector(reloadData)
                                 withObject:nil
                              waitUntilDone:NO];
[self.tableView performSelectorOnMainThread:@selector(reloadData)
                                 withObject:nil
                              waitUntilDone:NO];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文