So stornieren Sie eine asynchrone NSURLConnection

Aufrufen von Instanz-Methode Abbrechen, auf eine NSURLConnection die meisten oft nicht, Abbrechen der Verbindung überhaupt.

Ich bin der Durchführung einer asynchronen NSURLConnection in eine NSOperation. Wenn der Vorgang abgebrochen wird, wird die Verbindung beendet durch Aufruf von cancel auf NSURLConnection und dann wird die Verbindung zum nil.

Gibt es eine Möglichkeit, um die Verbindung zu beenden sofort? Meistens ist es weiterhin im hintergrund ausgeführt, bis die Anforderung abgeschlossen ist, auch wenn die beiden die Verbindung ist abgebrochen, und setzen Sie zu null. Die NSOperation Unterklasse ist dealloced, nachdem die Verbindung abgebrochen ist, die Verbindung ist freigegeben. Sogar nach, dass die asynchrone Verbindung läuft weiter!

Gibt es eine andere Möglichkeit es zu kündigen? Oder kann der thread seinen Betrieb auf abgebrochen werden?

Hier ist ein Codeausschnitt aus meinem NSOperation Unterklasse main-Methode:

      //Create and start asynchronous connection
      self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
      [request release];

      while(!isFinished) {
          if(self.isCancelled) {
             [self.connection cancel];
             self.connection = nil; 
             [self uploadCanceledDelegate];
             return;
          }

          //Special sleep because callbacks are executed on same thread as this loop
          [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
      }

HINWEIS: Dieses Verhalten nur auftreten, wenn WiFi aktiviert ist. Mit 3G/Edge/GPRS funktioniert es einwandfrei

InformationsquelleAutor Marcus | 2010-09-10
Schreibe einen Kommentar