私の iOS アプリでは、UI を更新する前に条件が true になるのを待ちたいと思います。私はこのようにやっています:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
while (!condition) NSLog("waiting for the condition");
dispatch_sync(dispatch_get_main_queue, ^{
//update the UI here
});
});
上記のコードは問題なく動作しますが、 whileループを使用して待機中のジョブを実行するのが良いかどうか、さらに良い方法があるかどうかを尋ねたいと思います。ありがとう!
- -アップデート
条件は、実際には 4 つの BOOL 変数の組み合わせです。各変数は、サーバーからのコンテンツの要求に関連付けられています。AFNetworking フレームワークを使用しています。4 つの要求それぞれの完了ブロックで、関連する BOOL 変数を YES に設定します。したがって、実際の while ループは次のようになります。
while (!([MyRequest request1].isFinished && [MyRequest request2].isFinished && [MyRequest request3].isFinished && [MyRequest request4].isFinished)) NSLog("waiting for the condition");