1

他のスレッド中にアラートビューを表示したい(他のスレッドにはテキスト読み上げがあります)。要するに、2 つのメソッドを同時に呼び出し、両方が同時に「動作」するようにしたいということです。

しかし、私の場合、私はalertViewを開始しています。画面は薄暗くなり、alertviewがないと、他のスレッドが開始されます。他のスレッドの準備ができた後、青いアラートビューが表示されます:

これがコードで、私の質問は次のとおりです。waitUntilAllOperationsAreFinished ..と同等のものは何ですか?

dispatch_async(dispatch_get_main_queue(), ^{
        [self alertWhileTTS];
    });

    [[self view] setNeedsDisplay];
    [self synthesizeInBackground];
    [queue waitUntilAllOperationsAreFinished];
    [self setIsSpeaking: false];
    [[self view] setNeedsDisplay];

この投稿も参照してください:正しくマルチスレッド化するには? UIAlertView が表示されず、灰色の画面のみ

4

1 に答える 1

0

これは私の問題を解決します:

[self performSelectorOnMainThread:@selector(alertWhileTTS) withObject:nil waitUntilDone:YES];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
        [[self view] setNeedsDisplay];
        [self synthesizeInBackground];
        [queue waitUntilAllOperationsAreFinished];
        [self setIsSpeaking: false];
        [[self view] setNeedsDisplay];

    }); 
于 2012-06-13T14:26:21.690 に答える