Qu'est-ce qui décrit le mieux le délégué aux applications? Comment s'intègre-t-il dans l'ensemble du concept?

StackOverflow https://stackoverflow.com/questions/828827

Question

Je pense savoir ce que fait le délégué à l'application. Il a quelques méthodes intéressantes comme -applicationDidFinishLaunching qui seront appelées une fois l'application lancée, etc. Mais qu'est-ce que c'est réellement? Est-ce un objet instancié dans la fonction UIApplicationMain ?

Et comment fonctionne-t-il, chaque classe de mon application a accès à cet objet Délégué d'application? Existe-t-il un bon graphique sur le net qui visualise ces relations?

Était-ce utile?

La solution

Dans Cocoa, un délégué est un objet qu’un autre objet reporte sur des questions de comportement et informe sur les modifications apportées à son état. Par exemple, un UITableViewDelegate est chargé de répondre aux questions sur le comportement de UITableView lorsque des sélections sont effectuées ou que des lignes sont réorganisées. C'est l'objet que UITableView demande lorsqu'il veut savoir quelle hauteur doit avoir une ligne particulière. Dans le paradigme Model-View-Controller, les délégués sont des contrôleurs et le nom de nombreux délégués se termine par "Contrôleur".

Au risque d’énoncer une évidence, UIApplicationDelegate est le délégué de l’application UIA. La relation est un peu plus évident dans Cocoa (Mac) que dans Cocoa Touch (iPhone), car le délégué de NSApplication est en mesure de contrôler le comportement de NSApplication plus directement (en empêchant par exemple l'application de se terminer). iPhone n'autorisant pas beaucoup de contrôle sur l'application UIA, de sorte que le UIApplicationDelegate est principalement informé des modifications plutôt que d'un processus décisionnel actif.

UIApplicationDelegate n'est pas strictement disponible partout dans l'application. Le singleton UIApplication est ([UIApplication sharedApplication]) et vous permet de trouver son délégué. Mais cela ne signifie pas qu'il soit approprié que chaque objet d'une application parle directement au délégué de l'application. En général, je déconseille aux développeurs de faire parler des objets au hasard au délégué de l'application. La plupart des problèmes résolus de cette manière sont mieux résolus via Singletons, NSNotification ou d’autres objets de délégation.

En ce qui concerne sa création, sur Mac, le délégué de l'application n'a rien de magique. C'est simplement un objet instancié et câblé par la carte NIB dans la plupart des cas. Sur iPhone, cependant, le délégué de l'application peut être légèrement magique s'il est instancié par UIApplicationMain (). Le quatrième paramètre est une chaîne NSString indiquant la classe du délégué de l'application, et UIApplicationMain () en créera une et la définira en tant que délégué de la sharedApplication. Cela vous permet de définir le délégué sans NIB (quelque chose de très difficile sur Mac). Si le quatrième paramètre de UIApplicationMain () est nil (comme dans les modèles Apple), le délégué est créé et câblé par la NIB principale, tout comme la fenêtre principale.

Autres conseils

L'objet est instancié de cette manière;

La fonction main recherche la référence principale définie dans info.plist. Le nib a pour délégué d'application, qui est défini sur une classe qui doit implémenter UIApplicationDelegates et ses méthodes requises. Le délégué de l'application charge ensuite un contrôleur de vue.

Il sert d'objet de rappel à l'échelle de l'application pour les événements qui affectent l'ensemble de l'application, tels que la mémoire insuffisante, etc.

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