使用串行队列时更新UI

时间:2010-12-06 03:03:18

标签: iphone multithreading ipad ios

我正在使用串行队列来进行视频处理的后台线程(块)。我想更新UI组件(特别是进度条)。我发现虽然我可以与UI进行交互,但我的进度条没有通过调用setProgress(从块中调用)进行更新,直到线程完成。

dispatch_queue_t dispatch_queue = dispatch_queue_create("somequeue", NULL);

    [somebody doSomethingOnQueue:dispatch_queue usingBlock:^{

        progressBar.progress = someFloat; //does not update

    }];

2 个答案:

答案 0 :(得分:9)

您应该更新主调度队列上的UI:

[somebody doSomethingOnQueue:dispatch_queue usingBlock:^{
    …
    dispatch_async(dispatch_get_main_queue(), ^{
        progressBar.progress = someFloat;
    });
}];

答案 1 :(得分:2)