使用串行队列时更新UI

aka*_*aru 2 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

    }];
Run Code Online (Sandbox Code Playgroud)

zou*_*oul 9

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

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