1

Je souhaite afficher un alertview pendant que d'autres threads (dans d'autres threads il y a text-to-speech). En bref, je veux appeler deux méthodes en même temps et je veux aussi que les deux "travaillent" en même temps.équivalent de waitUntilAllOperationsAreFinished

mais dans mon cas, je démarre alertView, l'écran est grisé et sans alertview, l'autre thread démarre. après l'autre thread est prêt, je reçois le alertview bleu:

Voici le code et ma question est: Quel est l'équivalent de waitUntilAllOperationsAreFinished ..?

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

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

Voir aussi ce message: How to multithred correctly? UIAlertView is not displayed, only gray screen

Répondre

0

cela résout mon problème:

[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]; 

    });