2012-09-27 14 views
5

Desidero annullare tutte le richieste. Ecco come sto creando connessione asincrona:NSURLConnection asincrono e NSOperation - cancellazione

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

Ho quindi utilizzare questo metodo:

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

per annullare tutte le richieste.

Che in realtà non fa nulla se non cambiare un BOOL in SI.

Così come dovrei cancellare una connessione asincrona?

risposta

5

Il non è possibile annullare le connessioni programmate utilizzando sendAsynchronousRequest. La coda a cui ti stai riferendo viene utilizzata solo per pianificare la procedura di completamento.

Se si desidera il pieno controllo dello NSURLConnection, è necessario implementare lo NSURLConnectionDelegate da soli. Un esempio di implementazione può essere trovato su https://gist.github.com/3794804

+0

Condividerò un esempio in questo in pochi minuti. – leo

1

Cosa si può fare è mettere le richieste sincrone in un'operazione (utilizzando un blocco).

Impostare NSOperationQueue maxNumberOfConcurrentOperations su 1 (in modo che vengano eseguiti uno alla volta).

Quindi se si esegue cancelAllOperations sulla coda, verrà interrotta qualsiasi operazione che non è stata ancora eseguita.