2012-04-02 2 views
0

Ich arbeite an einer iPhone-App, die Focus-Liste von Elementen bei jedem Start der App (6 Elemente mit Bildern) herunterlädt.Anwendung wurde beim Herunterladen hängen

Ich verwende 1 NSMutableURLRequest für in einer Schleife 6 Artikel Textinformationen herunterzuladen, dann in dem gleichen Verfahrensblock mit unterschiedlichen for-Schleife Ich verwende:

NSURL * imageURL = [NSURL URLWithString: strUrl]; 
NSData * imageData = [NSData dataWithContentsOfURL:imageURL]; 

für Bilder aller 6 Artikel zu bekommen. Der Code funktioniert einwandfrei, wenn ich bis zum Abschluss dieses Vorgangs warte und meine Liste in der Home-Ansicht aktualisiere. Wenn ich versuche zu navigieren, bleibt meine App stecken, bis sie heruntergeladen wird. Ich habe komplette Methode auf Hintergrundthread aufgerufen, aber es blieb immer noch für den Prozessabschluss stecken.

Wie kann ich für diesen Code codieren, damit der Benutzer alle Navigation ohne stecken kann und wenn er zurückkommen wird, können Sie die 6 Elemente in Sicht bekommen?

Vielen Dank im Voraus.

Antwort

0

könnten Sie NSURLConnectionsasynchronous request verwenden, um die Downloads im Hintergrund

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler` 

auf diese Weise der Download-Code sperren nicht zu tun. Sie können die Abschlussarbeit auch im Hintergrundthread ausführen (solange dieser nicht mit der Benutzeroberfläche arbeitet, muss dieser Code IMMER im Hauptthread enthalten sein).