2012-09-27 2 views
5

Je souhaite annuler toutes les demandes. Voici comment je crée une connexion asynchrone:NSURLConnection asynchrone et NSOperation - annulation

[NSURLConnection sendAsynchronousRequest:echo queue:self.queue completionHandler:^(NSURLResponse *respone, NSData *data, NSError *error){ 

J'utilise cette méthode:

-(void)cancelAllRequests 
{ 
    NSLog(@"%@",self.queue.operations); 
    [self.queue cancelAllOperations]; 
    [self.queue waitUntilAllOperationsAreFinished]; 
} 

pour annuler toutes les demandes.

Qui ne fait réellement rien sauf changer un BOOL à OUI.

Alors, comment je suis censé annuler une connexion asynchrone?

Répondre

5

Vous ne pouvez pas annuler les connexions planifiées en utilisant sendAsynchronousRequest. La file d'attente à laquelle vous faites référence est uniquement utilisée pour planifier le traitement d'achèvement.

Si vous voulez un contrôle total du NSURLConnection, vous devrez implémenter le NSURLConnectionDelegate vous-même. Un exemple de mise en œuvre peut être trouvé sur https://gist.github.com/3794804

+0

Je vais partager un aperçu de ceci dans quelques minutes. – leo

1

Ce que vous pourriez faire est de mettre des requêtes synchrones dans une opération (en utilisant un bloc).

Définissez NSOperationQueue maxNumberOfConcurrentOperations sur 1 (pour qu'ils s'exécutent un par un). Ensuite, si vous exécutez cancelAllOperations dans la file d'attente, toutes les opérations qui n'ont pas encore été exécutées seront stoppées.

Questions connexes