Así que, básicamente, necesito poder ejecutar un segue después de que un bloque haya terminado de ejecutarse. Tengo un bloque que hace algunas cosas JSON y necesito saber cuándo ha terminado de ejecutarse.cómo comprobar que un bloque dispatch_async ha terminado de ejecutarse
Tengo una cola a la que he llamado json_queue.
jsonQueue = dispatch_queue_create("com.jaboston.jsonQueue", NULL);
entonces tengo un bloque dispatch_async con esta sintaxis:
dispatch_async(jsonQueue, ^{
[self doSomeJSON];
[self performSegueWithIdentifier:@"modaltomenu" sender:self];
});
no va dejar que me realizo la línea: "[performSegueWithIdentifier auto: @" modaltomenu "remitente: auto];"
Se intentó obtener el bloqueo de web de una hebra que no sea la hebra principal o la hebra web. Esto puede ser el resultado de llamar a UIKit desde un hilo secundario. Chocando ahora ...
¿Dónde puedo comprobar para averiguar cuándo el hilo ha hecho su trabajo sucio para que pueda llamar a la segue?
Gracias gente encantadora.
PS: cerveza y ups y osos de peluche y flores a todo el que pueden ayudar a < 3.
usted señor tiene voto popular y cerveza. (¡Esa es la respuesta que estaba buscando!). Me olvidé por completo de que podrías regresar a la cola principal en cualquier momento. brillante. – jimbob
Soy nuevo en esto. ¿Por qué es esto mejor que usar performSelectorOnMainThread dentro del bloque? –
@jimbob Debería haber mencionado, que usar 'dispatch_sync' en lugar de' dispatch_async' en tercera línea sería mejor en este caso (he editado eso). Este patrón se recomienda en WWDC2010 Session 206 video. @ranReloaded Usar otro bloque es más conveniente porque no necesita crear un método completamente nuevo para una tarea tan simple, y lo mejor es que puede acceder a todas las variables dentro del alcance de la definición de bloque. – Johnnywho