2010-12-06 5 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

あなたはメインディスパッチキュー上のUI更新する必要があります:シリアルキューを要求dispatch_queue usingBlockのAPI、:

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

優れています。私は大いに勉強しています。 – akaru

関連する問題