150 votes

Qu'est-ce que l'AppDelegate et comment puis-je savoir quand l'utiliser?

Je suis juste de commencer à travailler sur les applications de l'iPhone. Comment puis-je savoir quand je devrais mettre des trucs dans le appdelegate par rapport à une classe personnalisée? Est-il une règle ou n'importe quel type d'analogie avec un autre langage de programmation comme python ou php qui utilise un appdelegate comme modèle?

264voto

Matt Gallagher Points 10431

J'ai l'habitude d'éviter l'approche de la conception implicite par Andrew de l'utilisation du terme "cœur de votre application". Ce que je veux dire par là, c'est que je pense que vous devriez éviter la formation de grumeaux trop de choses dans un emplacement central -- bonne conception de programme normalement implique la séparation de la fonctionnalité de "zone de préoccupation".

Un délégué de l'objet est un objet qui est notifié lorsque l'objet auquel il est connecté atteint certains événements ou d'états. Dans ce cas, le Délégué d'Application est un objet qui reçoit des notifications lorsque le UIApplication objet atteint certains états. À de nombreux égards, il est un spécialiste de l'un-à-un modèle Observateur.

Cela signifie que la "zone de préoccupation" pour l'AppDelegate est de manutention spéciale UIApplication unis. Les plus importantes sont:

  • applicationDidFinishLaunching: - bon pour la manutention sur-configuration de démarrage et de la construction
  • applicationWillTerminate: - bon, pour le nettoyage à la fin

Vous devez éviter de mettre d'autres fonctionnalités dans le AppDelegate car ils n'ont pas vraiment leur place. Autres fonctions:

  • Document de données, vous devriez avoir un gestionnaire de documents singleton (pour de multiples applications de document) ou un document singleton (pour un seul document les applications)
  • Bouton/table/vue contrôleurs, vue déléguer des méthodes ou de l'autre point de vue, la manutention (sauf pour la construction de l'affichage de niveau supérieur dans applicationDidFinishLaunching:) -- ce travail devrait être en vue, les classes de contrôleur.

Beaucoup de gens pensent que ces choses dans leur AppDelegate parce qu'ils sont paresseux ou qu'ils pensent que le AppDelegate contrôles de l'ensemble du programme. Vous devriez éviter de centraliser dans votre AppDelegate car il brouille les domaines de préoccupation dans l'application et n'est pas à l'échelle.

28voto

Andrew Grant Points 35305

Votre délégué d'application est le cœur de votre application. C'est effectivement votre Programme de "Contrôleur".

Le Délégué d'Application est la classe qui reçoit au niveau de l'application messages, y compris les applicationDidFinishLaunching message le plus couramment utilisé pour initier la création d'autres points de vue.

Bien que pas exactement similaire, vous pourriez considérer que la "main()" de routine de votre programme Cacao.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X