1

我想在其他线程(在其他线程中有文本到语音)时显示警报视图。简而言之,我想同时调用两种方法,并希望它们同时“工作”。

但就我而言,我正在启动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 回答