Estoy creando una aplicación que recupera un conjunto de resultados de una base de datos. Utilizo MBProgressHUD para mostrar el progreso de la consulta con una animación. El método que uso llama a la animación mientras se ejecuta un método en otro hilo y, una vez hecho, oculta la animación. Mi pregunta es, después de llamar a:Multithreading en iOS: ¿cómo forzar a un hilo a esperar una condición?
[HUD showWhileExecuting:@selector(getResults) onTarget:self withObject:nil animated:YES];
me gustaría, si no hay resultados, muestra una alerta que indica esto, y si existen, cargue la siguiente vista. Hasta el momento, no tengo este código:
[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
consigue el sistema al final del método getResults
. Sin embargo, dado que se llama a ese método en otro hilo, esta línea de ejecución continúa y muestra la alerta, aunque haya eventos en la base de datos.
Por lo tanto, a partir de aquí, tengo dos preguntas: ¿Cuál es la forma más fácil de implementar un mecanismo de espera en iOS y cuál es la forma más eficiente de implementar este tipo de mecanismo en iOS?
Gracias!
Ya veo. ¡Aún tengo mucho que aprender sobre programación para iOS! Echaré un vistazo a eso. ¡Gracias! – KerrM
El patrón 'pasar un bloque' es relativamente nuevo, pero parece ser la dirección hacia la que se dirigen las nuevas API en iOS 5. Ver, por ejemplo, 'TWRequest' o' ACAccountStore'. De hecho, probablemente sería mejor utilizar 'completionHandler:' en lugar de 'performWhenFinished:' para suministrar el bloque, según la convención que parece estar surgiendo. – Tommy