Précisions sur le File's Owner
skimpy
Membre
Bonjour,
Je viens de découvrir votre site et je débute en Cocoa / Obj-C. J'ai parcouru la section "Glossaire des termes" afin d'identifier ceux qui me posaient le plus de problème. Malgré la définition donnée, je n'arrive pas à voir à quoi correspond le "File's Owner".
Est-ce que quelqu'un pourrait me donner un cas réel d'utilisation ?
Merci.
Je viens de découvrir votre site et je débute en Cocoa / Obj-C. J'ai parcouru la section "Glossaire des termes" afin d'identifier ceux qui me posaient le plus de problème. Malgré la définition donnée, je n'arrive pas à voir à quoi correspond le "File's Owner".
Est-ce que quelqu'un pourrait me donner un cas réel d'utilisation ?
Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pour le mainNib (celui chargé automatiquement au démarrage d'une appli cocoa), le owner est l'application elle-même.
Pour tout autre nib chargé au cours de l'appli, c'est n'importe quel objet, généralement un objet de type contrôleur général.
L'avantage est que toutes les méthodes que fournit le owner sont exposées dans IB, et donc directement exploitables dans IB en tirant des liens (CTRL-CLIC puis DRAG).
.
- Est-il judicieux d'affecter au File's Owner du MainMenu.nib une autre class que NSApplication et quel en est l'intêret ?
- Dans un autre fichier NIB, quelle différence y a-t'il entre instancier une classe (afin de faire les liaisons entre la vue et l'instance) et affecter la classe au File's Owner pour faire la même chose ?
- Connaissez-vous des exemples ou des tutoriels à faire afin de se rendre bien compte du rôle tenu par File's Owner ?
Merci.
Le MainMenu.nib s'appelle MainMenu car il contient la barre des menu de l'appli.
Beaucoup d'options de menu que fournit la barre sont directement reliées à des méthodes de NSApp (l'objet application). Par exemple, Quitter est relié à terminate:, Masquer... relié à hide..., etc.
Tu peux changer le owner, mais alors ce sera à toi (dans l'implémentation de ton propre objet) de répondre à ces messages de la barre de menu et d'effectuer l'opération attendue.
Prenons l'exemple d'une appli que tu veux développer. Dans cette appli, tu utilises une fenêtre que tu auras besoin d'afficher en plusieurs exemplaires (genre fenêtre document). Cette fenêtre sera dans un nib, que tu chargeras autant de fois qu'il te faudra de fenêtre. Le owner est idéal pour garder trace de chacune de ces fenêtre, car à la différence d'un objet contrôleur inclus dans le nib, il est de ta responsabilité de créer ton owner avant de charger le nib. Or si tu le créés, tu peux en garder trace comme tu le veux.
.
Tu veux dire que tant que je n'ai pas fait de loadNibName, l'instance Titi n'est pas créée ? Par contre, dès que je fais un :
Toto * monToto = [[Toto alloc] init];
cela instancie mon File's Owner (et je peux ainsi manipuler toutes les variables qui constitue ma classe Toto avant de charger le NIB) ?
Oui, et même mieux.
Dans cette même classe Toto, si tu as un [tt]IBOutlet id instanceTiti;[/tt] dans le .h, tu pourras dans IB relier ton instance Titi à ton file's owner (en n'oubliant pas de mettre en custom-class du owner ta classe Toto).
Après le loadNibName, l'outlet instanceTiti pointera automatiquement sur l'instance Titi du nib.
.
En tout cas, encore merci ; j'ai découvert ce forum seulement hier et je le trouve vraiment génial.