iOS - Comment savoir quand NSOperationQueue finit de traiter quelques opérations?
J'ai besoin dans mon application pour télécharger des répertoires et leur contenu. J'ai donc décidé de mettre en œuvre un NSOperationQueue et je sous-classé NSOperation à mettre en œuvre NSURLRequest etc...
Le problème est que je ajouter toutes les opérations à la fois et je ne peux pas comprendre lorsque tous les fichiers d'un répertoire téléchargé la mise à jour de l'INTERFACE utilisateur et permettent à ce répertoire spécifique.
Maintenant je dois attendre que tous les fichiers de tous les répertoires sont téléchargés dans le but de mettre à jour l'INTERFACE utilisateur.
Je l'ai déjà mis en œuvre-clé de la valeur de l'observation de la operationCount de la NSOperationQueue et la isFinished de la NSOperation mais je ne sais pas quand un répertoire contient tous les fichiers qu'il contient !
Avez-vous une idée ?
Merci beaucoup
source d'informationauteur Dabrut
Vous devez vous connecter pour publier un commentaire.
Ajouter un "Fait"
NSOperation
qui a toutes les autresNSOperations
pour un répertoire de dépendance.Quelque chose comme ceci:
doneOp
ne courir aprèsop1
op2
etop3
ont fini de s'exécuter.Espère que cette aide
Une approche serait de créer une sorte de Répertoire de la classe avec des propriétés telles que loadedCount (initialement 0) et fileCount (initialisé par le nombre de fichiers dans le répertoire) et de créer un dictionnaire de la cartographie de chaque NSOperation dans le Répertoire approprié avant de les ajouter à la file d'attente. À l'intérieur de votre fonction de rappel pour l'isFinished, vous pourriez tirer l'objet d'Annuaire pour le NSOperation du dictionnaire et incrémenter le répertoire.loadedCount par 1. Si votre répertoire.loadedCount == répertoire.fileCount, déclencher une mise à jour de l'INTERFACE utilisateur.
Vous pouvez restructurer votre code afin d'éviter de replacement toutes les demandes à la fois. Mettre en file d'attente seulement des demandes pour un seul répertoire à la fois. Lorsque
operationCount
atteint zéro, vous pouvez être sûr que toutes les demandes, soit terminé ou pas, la mise à jour de l'INTERFACE utilisateur et de mettre en file d'attente les demandes pour le prochain annuaire. Continuer jusqu'à ce que le tableau des répertoires est vide.Les avantages sont: