Estoy intentando escribir una aplicación para iPad que carga una imagen desde una URL. Estoy utilizando el siguiente código de la imagen de carga:Retraso significativo al cargar imágenes usando UIImage desde URL asincrónicamente
url = [NSURL URLWithString:theURLString];
NSData *data = [NSData dataWithContentsOfURL:url];
img = [[UIImage alloc] initWithData:data];
[imageView setImage:img];
[img release];
NSLog(@"Image reloaded");
Todo ese código se agrega a una NSOperationQueue como una operación por lo que se carga de forma asíncrona y no causar mi aplicación para encerrar si websever de la imagen es lento. Agregué la línea NSLog para poder ver en la consola cuando este código terminó de ejecutarse.
He notado consistentemente que la imagen se actualiza en mi aplicación unos 5 segundos DESPUÉS de que el código termine de ejecutarse. Sin embargo, si utilizo este código por sí mismo sin ponerlo en NSOperationQUeue, parece que actualizo la imagen casi de inmediato.
El retraso no es causado completamente por un servidor web lento ... Puedo cargar la URL de la imagen en Safari y tarda menos de un segundo en cargar, o puedo cargarlo con el mismo código sin NSOperationQueue y carga mucho más rápido.
¿Hay alguna manera de reducir el retraso antes de que se muestre mi imagen pero seguir usando un NSOperationQueue?
Gracias, Tommy! Lo echaré un vistazo esta noche y veré a dónde puedo llegar con lo que me has contado.En realidad, esta mañana estaba leyendo diferentes formas de descargar imágenes en Coacoa, y descubrí por mi cuenta que cuando reescribí el código de manejo de imágenes completo usando NSUrlRequest y NSURLConnection, parecía cargar la imagen como esperaba. Todavía no estoy seguro de si usaré el nuevo método que escribí o el código que me acaba de mostrar, pero tener opciones es excelente, y escribirlo a ambos lados fue una buena experiencia de aprendizaje. ¡Gracias de nuevo por su ayuda y gracias por aguantar a un novato como yo! :) – Jackson
Por cierto, si alguien más lee esta pregunta, encontré este artículo muy útil para implementar un cargador de imágenes basado en NSUrlRequest. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html – Jackson