Question

J'ai une application iOS où 5 NSBlockOperation produisent chacun un NSArray d'objets et l'ajoutent à un NSMutableArray partagé et synchronisé qui sert de source de données UITableView.

Les opérations sont indépendantes les unes des autres, et dès qu'elles sont terminées, je dois lancer un rechargement de données UITableView.

Malheureusement, je n'ai pas trouvé de moyen de faire cela avec NSOperation.Dois-je utiliser une autre conception multithread ?

Était-ce utile?

La solution

Ajoutez votre appel de données de rechargement à un autre NSOperation, qui a pour dépendances (voir addDependency:) les cinq autres opérations.Elle ne sera alors exécutée que lorsque les autres seront terminées.

Assurez-vous d'envelopper vos appels d'interface utilisateur dans une distribution GCD vers le thread principal.

De la référence NSOperation :

Les dépendances sont un moyen pratique d'exécuter des opérations dans un ordre spécifique.Vous pouvez ajouter et supprimer des dépendances pour une opération à l'aide de addDependency :et supprimer la dépendance :méthodes.Par défaut, un objet opération qui a des dépendances n’est pas considéré comme prêt tant que tous ses objets opération dépendants n’ont pas fini de s’exécuter.Cependant, une fois la dernière opération dépendante terminée, l'objet opération devient prêt et capable de s'exécuter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top