Question

J'ai une application iPhone qui est essentiellement obtenir des informations à partir d'une API (en XML, mais peut-être éventuellement JSON). Les objets de résultat sont généralement affichés dans les contrôleurs d'affichage (tableaux principalement).

Voici l'architecture en ce moment.

J'ai des classes NSOperation qui vont chercher les différents objets du serveur distant. Chacune de ces classes NSOperation, prendra une méthode déléguée personnalisée qui les objets feu arrière résultant comme ils sont analysés, puis enfin une méthode lorsqu'aucun a plus de résultats. Ainsi, le protocole pour les délégués sera quelque chose comme:

(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;

Je pense que la solution fonctionne bien, mais je ne finir avec un tas de protocoles délégués autour et mes contrôleurs de vue doivent mettre en œuvre toutes ces méthodes de délégués. Je ne pense pas que ce mal que ça, mais je suis toujours à la recherche d'une meilleure conception.

Alors, je pense à l'aide NSNotifications pour éliminer l'utilisation des délégués. Je pourrais inclure l'objet dans la partie userInfo de la notification et juste après les objets tels qu'ils sont reçus, puis un dernier événement lorsqu'il n'y a plus sont disponibles. Ensuite, je pouvais avoir une méthode dans chaque contrôleur de vue de recevoir toutes les données, même lors de l'utilisation de plusieurs objets dans un seul contrôleur. †

Alors, peut partager quelqu'un avec moi certains avantages / inconvénients de chaque approche. Dois-je envisager refactorisation mon code pour utiliser des événements plutôt que les délégués? Est-on mieux alors l'autre dans certaines situations? Dans mon scénario, je suis vraiment pas recevoir de notifications à plusieurs endroits, alors peut-être les délégués à base de protocole sont la voie à suivre.

Merci!

Était-ce utile?

La solution

En fait, votre conception sonne son. L'approche claire de cacao utilise les délégués, et est beaucoup plus préféré jeter autour des objets. En outre, la définition de vos protocoles de cette façon rend votre code très explicite et facile à comprendre. Dans l'ensemble: garder le bon travail

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