Come posso ottenere NSURLConnection per chiamare i suoi metodi delegate da un thread diverso anziché il thread principale. Sto cercando di scherzare con il scheduleInRunLoop: forMode: ma non sembra fare ciò che voglio.iOS, NSURLConnection: Delega i callback su thread diversi?
Devo scaricare un file di grandi dimensioni e interrompe il thread principale così frequentemente che un po 'di rendering che sta accadendo inizia a diventare instabile.
NSURLRequest * request = [NSURLRequest requestWithURL:url];
NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
NSRunLoop * loop = [NSRunLoop currentRunLoop];
NSLog(@"loop mode: %@",[loop currentMode]);
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[connection start];
L'altra cosa che non vedo molto di è "Modalità" Ci sono solo due modi documentati in modo da non molto in realtà alla prova con.
Qualche idea?
Grazie
non si occupa del thread su cui gira la coda? Quindi, lo chiamo una volta, il thread è tenuto in giro. Lo chiamo di nuovo, dal momento che GCD decide su quale thread gira la coda, quindi forse un altro thread viene tenuto in giro e così via ... Quindi, non è possibile mantenere i thread in giro senza motivo una volta che il lavoro è stato fatto sui thread usati. coda globale? Inoltre cosa intendi per "Se vuoi una garanzia su quale thread stai correndo, sostituisci la chiamata a dispatch_get_global_queue() in modo appropriato."? Come puoi indirizzare un thread attraverso GCD? – zumzum