Ich versuche eine iPad-App zu schreiben, die ein Bild von einer URL lädt. Ich bin mit dem folgenden Bild Ladecode:Signifikante Verzögerung beim Laden von Bildern mit UIImage von URL asynchron
url = [NSURL URLWithString:theURLString];
NSData *data = [NSData dataWithContentsOfURL:url];
img = [[UIImage alloc] initWithData:data];
[imageView setImage:img];
[img release];
NSLog(@"Image reloaded");
All dieses Codes zu einem NSOperationQueue als eine Operation hinzugefügt wird, so dass es asynchron geladen wird und nicht dazu führen, meine Anwendung, wenn das Bild des websever langsam einzusperren. Ich habe die NSLog-Zeile hinzugefügt, so dass ich in der Konsole sehen konnte, wenn dieser Code fertig war.
Ich habe ständig festgestellt, dass das Bild in meiner App etwa 5 Sekunden nach der Ausführung des Codes aktualisiert wird. Wenn ich diesen Code jedoch selbst verwende, ohne ihn in NSOperationQUeue zu setzen, scheint es das Bild fast sofort zu aktualisieren.
Die Verzögerung wird nicht vollständig durch einen langsamen Webserver verursacht ... Ich kann die Bild URL in Safari laden und es dauert weniger als eine Sekunde, um zu laden, oder ich kann es mit dem gleichen Code ohne die NSOperationQueue und es laden lädt viel schneller.
Gibt es eine Möglichkeit, die Verzögerung zu reduzieren, bevor mein Bild angezeigt wird, aber eine NSOperationQueue verwenden?
Danke, Tommy! Ich werde es mir heute Nacht ansehen und sehen, wo ich von dem, was du mir gesagt hast, komme.Eigentlich habe ich heute Morgen verschiedene Möglichkeiten gelesen, Bilder in Coacoa herunterzuladen, und ich habe selbst entdeckt, dass, als ich den gesamten Bildbearbeitungscode mit NSUrlRequest und NSURLConnection neu schrieb, es das Bild wie erwartet zu laden schien. Ich bin mir immer noch nicht sicher, ob ich die neue Methode, die ich geschrieben habe, verwenden werde oder den Code, den Sie mir gezeigt haben, aber Optionen zu haben, ist großartig, und es in beide Richtungen zu schreiben war eine gute Lernerfahrung. Nochmals vielen Dank für Ihre Hilfe und danke, dass Sie sich mit einem Neuling wie mir abgeben! :) – Jackson
Übrigens, wenn jemand diese Frage liest, fand ich diesen Artikel sehr hilfreich bei der Implementierung eines NSUrLRequest basierten Bildladeprogramms. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html – Jackson