Est-il acceptable de placer la plupart des logiques et des templates dans l'appDelegate?

Pour la plupart de mes applications, j'ai placé toute la logique dans les classs, que chaque ViewController aurait une reference à la class, ou créer / libérer l'object lui-même.

Je viens de commencer à lire un livre sur IOS, et l'auteur semble vouloir mettre la logique de l'application dans appDelegate, et les viewcontrollers relaient juste les actions aux methods appDelegate qui font le vrai travail.

Est-ce que l'auteur fait cela simplement parce que ce sont des exemples simples, ou est-ce quelque chose que je devrais apprendre, et commencer à faire dans mes applications?

Premièrement, voir Qu'est-ce qui décrit le mieux le délégué d'application? Comment cela s'intègre-t-il dans l'set du concept?

Le délégué d'application est le délégué de l'application. Ce n'est pas l'endroit pour détenir tout ce que vous ne savez pas où mettre d'autre. Ce n'est pas l'endroit de stockage pour les globals. C'est le délégué pour l'object UIApplication . C'est donc le bon endroit pour mettre du code lié au démarrage de l'application, à la terminaison, au basculement vers et depuis l'arrière-plan, etc. Les choses qui ont à voir avec la façon dont l'application s'intègre dans le operating system.

Le délégué de l'application est un controller, il ne doit donc pas contenir de données. Les données vont dans le model. Le délégué de l'application peut créer le model au démarrage et le remettre à d'autres controllers, mais ce n'est pas l'API du model. Souvent, le model est un singleton au lieu d'être créé par le délégué de l'application. Les deux approches ont des avantages.

La plupart des exemples de code place le code du model dans le délégué de l'application, car pour les exemples simples, il nécessite un peu less de code. Mais dans les vrais programmes, cela rend le délégué de l'application beaucoup trop compliqué et nuit considérablement à la réutilisation du code. Votre délégué d'application devrait généralement être assez petit, et la plupart des methods devraient faire partie de <UIApplicationDelegate> .

Je dirais que c'est parce que les exemples sont probablement simples. Pour toute application raisonnablement complexe, la class appdelegate deviendrait rapidement trop lourde.

Techniquement, vous pourriez le faire. En termes de pratique de programmation, ne le faites pas. Une fois que vous mettez beaucoup de choses dans l'appDelegate, cela devient très compliqué. Mon conseil serait de le laisser tranquille.

Vous n'avez rien à append dans appDelegate sauf les variables globales. Et si vous en avez besoin parfois, ma suggestion serait d'utiliser quelque chose d'autre comme le motif singleton. De manière générale, les variables globales ne sont pas de bonnes pratiques.

J'espère que cela t'aides.