0

バックグラウンド スレッドでコードを実行しています。これはある種の計算を実行しており、do-while ループ内にあります。要件の変更により、ユーザーに入力を促す UI を表示する必要があります。この UI コードはメイン スレッドで実行する必要があり、プロンプトが入力された後、ロジックを続行する必要があります。メインスレッドでdispatch_asyncを使用してUIを表示できますが、UIが完了するまでステップ-2を続行しないでください。コードの流れを壊したり、ユニットをブロックに移動したりせずに、これを達成するための最良の方法は何ですか?

例えば:

-(void) compute
{
    do 
    {
        //calculate some data
        // Step -1...
        ...
        // Step -2
         ...
         ...
     } while(flag)
}

ステップ 1 とステップ 2 の間に、プロンプトを表示したい。そうするための最良の方法は何ですか?UI が完了した後、メイン スレッドによって起動されるミューテックスを使用して、このバックグラウンド スレッドをブロックしてもよろしいですか?

4

2 に答える 2

0

これを試して

dispatch_queue_t mainQueue = dispatch_get_main_queue(); 
dispatch_async(mainQueue, ^(void) {

    //do stuff here

    });
于 2013-03-02T03:45:50.990 に答える