Ich habe 4 Elemente in meinem NSMutableArray
. Ich habe diesen netten Code zum Herunterladen von Dateien und Anzeigen der Dateidaten in UITextView
zu Testzwecken. Ohne die for
-Schleife ist alles in Ordnung. Der Code, der mir das Problem gibt, ist in dieser Funktion:
Ich dachte zuerst, dass das Problem in isBusy
BOOL
sein könnte, aber selbst ohne die Bedingung if
stürzt die App ab. Der Compiler gibt mir keinen Fehler, aber dieser:
Hier ist der Link für den großen Screenshot .
Der Rest der Funktionen sind wie folgt:
%Vor%Alle NSLogged Werte sind mehr als gut, das Array hat Links und alle Links sind korrekt.
Sie nehmen die asynchrone API initWithRequest: Delegate: und versuchen Sie, es synchron zu machen, indem Sie das Flag isBusy verwenden. Dieser Ansatz ist sehr falsch, da die NSURLConnection-Klasse intelligent genug ist und keine willkürlichen Flags verwenden muss, wenn Sie sie richtig verwenden. Sie sollten ernsthaft über die Verwendung von NSOperationen oder GCD nachdenken. Wenn Sie eine komplexere Konnektivitätsprogrammierung planen, sollten Sie vielleicht ein Drittanbieter-Framework wie RestKit in Betracht ziehen.
Ich denke, es ist ein Problem mit URL-Objekt in [NSURLRequest requestWithURL: url Es ist nicht notwendig, die URL in ein zusätzliches Objekt zu kopieren. Versuchen Sie Folgendes:
%Vor%(oder fügen Sie selbst hinzu. vor DownloadURL)
Wenn Ihr DownloadArray NSStrings enthält:
%Vor%Ich würde empfehlen, ein externes Framework wie [ASIHTTPRequest] (http://allseeing-i.com/ASIHTTPRequest/
) zu verwenden Entfernen Sie die for-Schleife und den isBusy-Indikator.
In complexDownload
verarbeitet immer nur das erste oder das letzte (was auch immer passender ist) Objekt und entfernt es dann aus dem Array. In connectionDidFinish
invoke complexDownload
erneut. Benutze performSelector
dafür. Die Wartezeit kann sogar 0,0f betragen. Auf diese Weise würde Ihre downloadArray
als eine Art Warteschlange fungieren.
Tags und Links objective-c iphone ios nsurlconnection cocoa-touch