Quindi in pratica devo essere in grado di eseguire un seguito dopo che un blocco ha finito di funzionare. Ho un blocco che fa alcune cose JSON e ho bisogno di sapere quando ha finito di funzionare.come controllare che un blocco di dispatch_async abbia finito di funzionare
Ho una coda che ho chiamato json_queue.
jsonQueue = dispatch_queue_create("com.jaboston.jsonQueue", NULL);
Ho poi un blocco dispatch_async con la seguente sintassi:
dispatch_async(jsonQueue, ^{
[self doSomeJSON];
[self performSegueWithIdentifier:@"modaltomenu" sender:self];
});
E non lo lascerà eseguo la linea: "[sé performSegueWithIdentifier: @" modaltomenu "mittente: self];"
Si è tentato di ottenere il blocco Web da una filettatura diversa dalla filettatura principale o dalla bobina. Questo potrebbe essere il risultato di una chiamata a UIKit da un thread secondario. Crashing now ...
Dove posso controllare per sapere quando il thread ha fatto il suo lavoro sporco, quindi posso chiamare il seguito?
Grazie persone carine.
PS: la birra e up e orsacchiotti e fiori a chi può aiutare < 3.
signore, lei ha voti positivi e birra. (questa è la risposta che stavo cercando!). Ho completamente dimenticato che potevi tornare alla mainqueue in qualsiasi momento. brillante. – jimbob
Sono nuovo di questa roba. Perché è meglio di usare performSelectorOnMainThread all'interno del blocco? –
@jimbob Devo dire che usare in questo caso "dispatch_sync' invece di' dispatch_async' in terza riga sarebbe meglio (ho modificato quello). Questo modello è consigliato nel video della sessione 206 WWDC2010. @ranReloaded L'utilizzo di un altro blocco è più conveniente perché non è necessario creare un metodo completamente nuovo per un'attività così semplice, e ciò che è fantastico, è possibile accedere a tutte le variabili nell'ambito della definizione dei blocchi. – Johnnywho