Ich versuche, eine iPad-App zu schreiben, die ein Bild von einer URL lädt. Ich verwende den folgenden Code zum Laden von Bildern:
url = [NSURL URLWithString:theURLString];
NSData *data = [NSData dataWithContentsOfURL:url];
img = [[UIImage alloc] initWithData:data];
[imageView setImage:img];
[img release];
NSLog(@"Image reloaded");
All dieser Code wird zu einem NSOperationQueue als eine Operation hinzugefügt, so dass es asynchron geladen wird und nicht dazu führen, dass meine app zu sperren, wenn das Bild der Websever langsam ist. Ich fügte die NSLog-Zeile hinzu, damit ich in der Konsole sehen konnte, wann dieser Code ausgeführt wurde.
Ich habe immer wieder festgestellt, dass das Bild in meiner Anwendung etwa 5 Sekunden NACH Beendigung der Codeausführung aktualisiert wird. Allerdings, wenn ich diesen Code auf eigene Faust verwenden, ohne es in der NSOperationQUeue scheint es, das Bild fast sofort zu aktualisieren.
Die Verzögerung ist nicht ausschließlich auf einen langsamen Webserver zurückzuführen... Ich kann das Bild URL in Safari laden und es dauert weniger als eine Sekunde zu laden, oder ich kann es mit dem gleichen Code ohne die NSOperationQueue laden und es lädt viel schneller.
Gibt es eine Möglichkeit, die Verzögerung zu reduzieren, bevor mein Bild angezeigt wird, aber halten Sie eine NSOperationQueue verwenden?