2010-12-06 49 views
2

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

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

    [somebody doSomethingOnQueue:dispatch_queue usingBlock:^{ 

     progressBar.progress = someFloat; //does not update 

    }]; 

回答

9

您应该更新主调度队列中的用户界面:

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

非常好。我正在学习很多东西。 – akaru 2010-12-06 18:04:06