Multithreading in iOS - wie zu zwingen, einen thread zu warten, für eine Bedingung?

Ich bin erstellen einer Anwendung, die holt sich die Ergebnisse aus einer Datenbank, ich nutze MBProgressHUD zu zeigen, den Fortschritt der Abfrage mit einer animation. Die Methode, die ich verwenden, ruft die animation während der Ausführung einer Methode in einem anderen thread und sobald es fertig ist, verbirgt die animation. Meine Frage ist, nach dem Aufruf:

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

Ich würde gerne, wenn es keine Ergebnisse, anzeigen einer Warnung, die besagt das, und wenn es gibt, laden Sie die nächste Ansicht. Bisher habe ich diesen 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 festgelegt wird, am Ende der getResults Methode. Jedoch, da diese Methode aufgerufen wird, in einem anderen thread wird diese Linie die Ausführung fortgesetzt und zeigt die Warnung, auch wenn es Ereignisse in der Datenbank.

Also, von hier aus habe ich zwei Fragen: Was ist der einfachste Weg zur Implementierung einer warte-signal-Mechanismus in iOS und was ist der effizienteste Weg zur Umsetzung dieser Art von Mechanismus in iOS?

Dank!

InformationsquelleAutor KerrM | 2012-03-06

Schreibe einen Kommentar