Wie kann ich das Abbrechen einer asynchronen Aufruf durch NSURLConnection sendAsynchronousRequest?
Habe ich eine web-service-Aufruf durchführen einer überprüfung, die auf Benutzereingaben in Echtzeit. Ich möchte die [NSURLConnection sendAsynchronousRequest]
auf die Prüfung (die war eingeführt in iOS 5), aber Abbrechen, wenn der Benutzer ändert den Eingabefeld-Inhalt in der Zwischenzeit. Was ist der beste Weg zu brechen Sie eine aktuelle Anfrage?
InformationsquelleAutor Micah Hainline | 2011-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint nicht, dass es ist ein guter Weg, dies zu tun. Die Lösung scheint es zu sein, nicht die neuen
[NSURLConnection sendAsynchronousRequest]
in Situationen, in denen Sie benötigen, um die Anforderung abzubrechen.InformationsquelleAutor Micah Hainline
Habe ich es geschafft, dies zu tun, indem die sendAsynchronousRequest-Methode in einem separaten
DownloadWrapper
- Klasse, wie folgt:Nutzen diese Klasse, mache ich die folgenden, zusätzlich zu der Deklaration der
DownloadWrapper *downloadWrapper
variable (in der interface-Deklaration) und die Umsetzung des Protokolls von Methoden, die Griffe, die Reaktion oder das fehlen eines:Dann habe ich einfach Folgendes tun, um 'Cancel' (Abbrechen der Verbindung, wenn die Sicht ist zu verschwinden:
Es ist einfach so. Dies würde hoffentlich imitieren die dokumentiert
cancel
- Methode, die besagt, dass es Folgendes macht:Ich war besorgt, dass diese (etwas naiv) - Methode bedeutet, dass die Datenpakete noch kommen würde durch die in der Antwort auf unsere URL-Anforderung - nur, dass wir uns nicht mehr 'hören', als die Delegierten. Aber dann habe ich gemerkt, dass sobald der URL-Anforderung gesendet wurde, durch, es gibt wirklich keine Möglichkeit zu stoppen, die Antwort kommt zu uns zurück - wir können nur ignorieren Sie es (wenn nicht auf dieser Ebene, dann noch auf etwas niedrigerer Ebene in der Netzwerk-Hierarchie). Bitte korrigieren Sie mich, wenn ich falsch Liege.
So oder so, hoffe das hilft.
Du hast Recht, es war viel zu kurz - auch für das, was ich brauchte. Ich hab da änderte sich mein Ansatz und nutzte die RequestQueue - Klasse von Nick Lockwood statt. Es hat Methoden zum Abbrechen aller (concurrent) Anfragen, oder ein insbesondere ein, wenn nötig.
InformationsquelleAutor pxlshpr