如何使用队列中的值更新GUI元素?
如果我使用异步队列构造,则不会更新textlable。
这是我使用的代码示例:

- (IBAction)dbSizeButton:(id)sender {
    dispatch_queue_t getDbSize = dispatch_queue_create("getDbSize", NULL);
    dispatch_async(getDbSize, ^(void)
    {
        [_dbsizeLable setText:[dbmanager getDbSize]];
    });

   dispatch_release(getDbSize);
}

谢谢。

最佳答案

正如@MarkGranoff所说,所有UI都需要在主线程上处理。您可以使用performSelectorOnMainThread来做到这一点,但是对于GCD来说,它将是这样的:

- (IBAction)dbSizeButton:(id)sender {

    dispatch_queue_t getDbSize = dispatch_queue_create("getDbSize", NULL);
    dispatch_queue_t main = dispatch_get_main_queue();
    dispatch_async(getDbSize, ^(void)
    {
        dispatch_async(main, ^{
            [_dbsizeLable setText:[dbmanager getDbSize]];
        });
    });

    // release
}

07-24 21:55