Je commence tout juste à travailler sur les applications iPhone. Comment savoir quand je devrais mettre des éléments dans AppDelegate par rapport à une classe personnalisée? Existe-t-il une règle ou un type d'analogie avec un autre langage de programmation tel que Python ou PHP) qui utilise un modèle de type AppDelegate?
J'évite normalement l'approche de conception qu'implique l'utilisation par Andrew du terme "cœur de votre application". Ce que je veux dire par là, c'est que je pense que vous devriez éviter de ranger trop de choses dans un emplacement central - une bonne conception de programme implique normalement une séparation des fonctionnalités par "domaine de préoccupation".
Un objet délégué est un objet qui est notifié lorsque l'objet auquel il est connecté atteint certains événements ou états. Dans ce cas, le délégué d'application est un objet qui reçoit des notifications lorsque l'objet UIApplication atteint certains états. À bien des égards, il s'agit d'un modèle d'observateur individuel personnalisé.
Cela signifie que le "sujet de préoccupation" pour AppDelegate gère des états UIApplication spéciaux. Les plus importants d'entre eux sont:
Vous devez éviter de mettre d'autres fonctionnalités dans AppDelegate car elles n'y appartiennent pas vraiment. Cette autre fonctionnalité comprend:
Beaucoup de gens jettent ces choses dans leur AppDelegate parce qu’ils sont paresseux ou qu’ils pensent que AppDelegate contrôle l’ensemble du programme. Vous devez éviter de centraliser dans votre AppDelegate, car cela brouille les zones de préoccupation dans l'application et ne s'adapte pas.
Votre délégué à l'application est le cœur de votre application. C'est effectivement votre "contrôleur de programme".
Le délégué d'application est la classe qui reçoit les messages au niveau de l'application, y compris le message applicationDidFinishLaunching le plus couramment utilisé pour lancer la création d'autres vues.
Bien que pas tout à fait similaire, vous pourriez penser à cela comme à la routine "main ()" de votre programme Cocoa.
@Shivam, merci.
D'après ce que je comprends de appDelegate
, c'est proche de ce qu'est un Application
dans Android. Le viewDidLoad
, viewDidDisappear
est comparable au cycle de vie d’Android. Chaque application a un cycle de vie allant du lancement aux interruptions d'appels entrants, en passant par les notifications. Si vous avez besoin que votre code fasse quelque chose de spécial lorsque ces événements system
se produisent, vous devez écrire du code pour les méthodes.
Dans Android, nous utilisons onPause
, onDestroy
, onCreate
un peu comme des méthodes de rappel pour gérer de tels événements système.
J'espère que cela aidera un peu plus ...
Les programmeurs débutant dans cette langue ont toujours la même question: le programme part-il d'une méthode principale? Oui, vous avez raison dans ce cas. IOS les applications démarrent également à partir d'une méthode principale.
Votre classe principale appelle la fonction ci-dessous:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain lance la boucle d'exécution et l'infrastructure de l'application Cocoa Touch qui créent un objet UIApplication
. Notre application a besoin de contenu, donc objective-c utilise un délégué pour le gérer. C'est pourquoi nous l'appelons AppDelegate (agir en tant que délégué de UIApplication
). Nous implémentons certaines des méthodes optionnelles de ce délégué et celui-ci se comporte en conséquence.