Le Multithreading dans iOS - comment forcer un thread à attendre pour un état?

Je suis en création d'une application qui extrait un ensemble de résultats à partir d'une base de données - je utiliser MBProgressHUD pour montrer le progrès de la requête avec une animation. La méthode que j'utilise les appels de l'animation lors de l'exécution d'une méthode dans un autre thread, et une fois que c'est fait, il se cache de l'animation. Ma question est, après l'appel:

[HUD showWhileExecuting:@selector(getResults) onTarget:self withObject:nil animated:YES];

Je voudrais, si il n'y a pas de résultats, afficher un message d'alerte disant cela, et si il y a, de charger la vue suivante. Jusqu'à présent, j'ai ce code:

[HUD showWhileExecuting:@selector(getResults) onTarget:self withObject:nil animated:YES];

if(self.thereAreEvents) {
    [self performSegueWithIdentifier:@"searchResults" sender:self];
} else {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No results" message:@"Sorry, there are no results for your search. Please try again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    [alert release];
}

self.thereAreEvents obtient à la fin de la getResults méthode. Toutefois, cette méthode est appelée dans un autre thread dans cette ligne de l'exécution continue et montre l'alerte, même si il y a des événements dans la base de données.

Donc, d'ici la, j'ai deux questions: Quelle est la façon la plus simple à mettre en œuvre une attente du signal mécanisme iOS et quel est le moyen le plus efficace pour mettre en œuvre ce type de mécanisme dans iOS?

Merci!

InformationsquelleAutor KerrM | 2012-03-06