GCD dispatch_async y NSURLConnection

Quería una manera rápida y fácil de get datos de una URL sin tener que meterme con los delegates .

¿Hay algo malo con lo siguiente?

 // Use gcd dispatch_queue_t queue = dispatch_queue_create("com.dowork", 0); dispatch_queue_t main = dispatch_get_main_queue(); // do the long running work in bg async queue // within that, call to update UI on main thread. dispatch_async(queue, ^{ // Do work in the background NSData *response = [NSURLConnection sendSynchronousRequest:serviceRequest returningResponse:&serviceResponse error:&serviceError]; dispatch_async(main, ^{ // Update UI self.data = response; [self.tableView reloadData]; });//end });//end 

Creí haber leído en algún lugar hace mucho time que usar el método síncrono NSURLConnection en un hilo de background causaría pérdidas de memory. ¿Es esto cierto?

¿Hay algún problema con los códigos que se publica allí? ¿Algún problema con la asignación de los datos a self.data dentro del bloque?

Si está apuntando a ios5 y más adelante, hay sendSynchronousRequest de sendConnection de NSUR: queue: completionHandler:

Para responder a su pregunta específica, me parece que la response podría tener fugas: no sé si hay un grupo de autorelease implícito en subprocesss de GCD.

Realizó algunas investigaciones ahora: los subprocesss de GCD tienen sus propias agrupaciones autorelease, pero no se sabe cuándo se agotarán. Probablemente quiera agrupar las dos primeras declaraciones con un grupo de autorelease explícito.

Vea también ¿Necesita crear un NSAutoreleasePool dentro de un bloque en GCD?