Yo quería una manera rápida y fácil de obtener datos de URL
sin tener que meterme con delegates
.GCD dispatch_async y NSURLConnection
¿Hay algún problema 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
pensé que leí en alguna parte hace mucho tiempo que utilizando el método sincrónico NSURLConnection
en un subproceso de fondo causaría pérdidas de memoria. ¿Es esto cierto?
¿Hay algún problema con los códigos que se publican allí? ¿Algún problema con la asignación de los datos a self.data
dentro del bloque?
Soy consciente de que, y han probado algunas implementaciones con él. Pero, todavía está limitado por lo que tengo que hacer. El método que muestro arriba es tan agradable y fácil de obtener 'NSData', todos los demás métodos asíncronos parecen ser un proceso de 2 pasos con delegados. Entonces, todavía me pregunto acerca de mi pregunta original. –
@Nic: actualizó mi respuesta – JeremyP
Gracias, ¿así que piensas que es seguro hacerlo de esta manera, siempre y cuando agregue mi propio grupo de autorrelease? –