2010-03-22 6 views
1

Je crée une application qui implique de nombreux appels de service Web. J'utilise NSOperation pour exécuter les appels de service Web. Il y a plusieurs vues dans l'application et j'appelle le web-service chaque fois que la vue se charge. Puisqu'il s'agit d'une navigation, si l'utilisateur décide de revenir à la vue précédente avant même que l'opération ne soit terminée, une autre opération entre dans la file d'attente et attend l'achèvement de l'opération précédente. Est-il possible d'empêcher l'exécution de l'opération précédente lorsque son affichage change? pls aiderSuppression de NSOperation de la file d'attente lors de la modification des vues

Répondre

1

Avez-vous essayé quelque chose comme ça dans votre contrôleur de vue:

- (void)viewWillDisappear:(BOOL)animated { 
    [myOperation cancel]; 
    ... 
} 
+0

mais je dois retirer toutes les opérations en file d'attente. j'ai essayé [opQueue cancellAllOperations]; mais toujours s'écraser. Je pense que l'opération en cours d'exécution n'est pas annulée. J'ai donc essayé waitUntilAllOperations, mais cela prend trop de temps .. – Nithin

+0

@Nithin: Annuler une opération n'arrête son fonctionnement que si l'opération vérifie le keypath isCancelled et arrête ce qu'elle fait en fonction de ce résultat. Il semble que vos opérations ne répondent pas à cela, donc -waitUntilAllOperationsAreFinished bloque jusqu'à ce qu'elles soient entièrement exécutées. Vous pouvez également regarder comment ASIHTTPRequest gère cela: http://allseeing-i.com/ASIHTTPRequest/ –

Questions connexes