0

J'ai une application iPhone assez complexe qui a de nombreux processus asynchrones se produisent. Pour faire face à cela, je fais un usage intensif de NSNotification Center. Ma question est quelle est la "meilleure pratique", si une telle chose existe ", pour l'enregistrement des notifications? En ce moment, ils ont saupoudré mon code de manière aléatoire, je suis sur le point d'aller à la production et je veux le nettoyer Je pense à avoir une méthode "registerNotifications" dans viewDidLoad de la vue principale qui enregistre évidemment toutes les notifications en une fois.Si cela semble raisonnable? Si non, quelle serait la meilleure façon de traiter cela.Merci d'avance pour votre aideiPhone Objective-C Placement de NSNotifications

Répondre

4

Mettre toutes les notifications dans un objet détruit l'encapsulation et c'est mauvais. Vous faites en sorte que les opérations de notification d'objets dépendent d'un autre objet qui fonctionne correctement. Ce sera en réalité un cauchemar qui suivra tout cela. Il est également rétrograde à l'objectif global des notifications, à savoir créer un système de messagerie décentralisé et modulaire.

Notifications ne doit pas être « parsèment le code », mais ils doivent être gérés uniquement par les objets qui les reçoivent. Si vous utilisez beaucoup de notifications, vous devrez peut-être créer une classe avec des méthodes dédiées pour gérer plusieurs notifications, puis hériter de vos autres classes de cette classe. De cette façon, vous obtenez une gestion automatique. L'une des grandes erreurs que les gens font avec les notifications est qu'ils enregistrent les contrôleurs quand ils ont vraiment besoin d'enregistrer leur modèle de données. Par exemple, supposons que vous téléchargiez des données à partir d'une URL et que vous souhaitiez mettre à jour l'interface à mesure qu'elle progresse et/ou lorsqu'elle se termine. Si vous avez plusieurs vues dans votre interface utilisateur et que vous enregistrez des contrôleurs, chaque vue doit gérer une notification (dont il peut y en avoir plusieurs). Toutefois, si vous configurez le modèle de données partagé pour recevoir la notification, vous n'avez besoin que maximum de deux notifications. On ira au datamodel pour que le datamodel puisse se mettre à jour et que le datamodel émette une notification générique pour que les vues d'écoute se mettent à jour depuis le datamodel. Rendre votre contrôleur de vue dépendant du modèle de données simplifie grandement la conception dans tous les cas.

+0

excellente réponse merci! – ennuikiller

0

Un objet doit s'inscrire en tant qu'observateur des notifications qui l'intéressent. Le meilleur moment pour le faire est lorsque l'objet devient intéressant, sinon vous devez traiter les notifications lorsque vous ne les voulez pas.

+0

Donc en d'autres termes, vous dites que je devrais les laisser saupoudrés dans le code? – ennuikiller