2010-02-04 20 views
0

Il s'agit d'une question sur le fonctionnement interne des fichiers Cocoa NIB et les classes de structure de soutien pour eux.Cocoa: qu'est-ce qui crée l'instance d'une classe de contrôleur liée à un fichier NIB?

Pour un exemple pratique, s'il vous plaît jeter un oeil à ce tutoriel Convertisseur de devises d'Apple: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/01Introduction.html

Si vous ouvrez le fichier MainMenu.nib, vous verrez un objet représentant « Controller Converter ». Lorsque l'application s'exécute, une instance de la classe ConverterController est instanciée par quelque chose dans l'application (quelque chose dans le NIB, ou le framework supportant le NIB).

(Ne pas confondre avec l'autre classe, convertisseur, qui a son instance créée par le code ConverterController.)

Ma question est, ce qui crée cette instance de ConverterController? Est-ce l'objet propriétaire du fichier par défaut dans la NIB? Quel que soit l'objet qui crée l'instance, quel est le code utilisé par cet objet? Il doit y avoir une méthode/fonction quelque part dans la BNI ou en disant cadre:

ConverterController *someVarName = [[ConverterController alloc] init]; 

Je veux voir ce code, le code spécifique qui est actuellement utilisé pour créer l'instance ConverterController.

Je ne veux pas savoir comment créer un remplacement pour l'instance ConverterController, ou en général comment instancier manuellement des instances de classe liées à un fichier NIB.

Répondre

2

Une plume est une archive d'objets. Ils sont créés dans Interface Builder et lorsque la plume est chargée, les objets qu'elle contient sont désarchivés et liés.

+0

Ceci n'est pas une fausse déclaration. – Nibbles

+0

Mais ceux qui votent mystérieusement la réponse s'il vous plaît noter - c'est une déclaration seulement tangentiellement liée à la question que j'ai posée. – Nibbles

+0

Il est directement lié. Vous avez demandé ce qui crée l'instance - j'ai répondu qu'Interface Builder le fait. Il n'y a pas de "code dans la plume" - la plume n'est qu'une archive. C'est la réponse. – Chuck

1

Jetez un oeil au document Resource Programming Guide dans les documents du développeur. La section sur les fichiers Nib est un bon aperçu, et la sous-section "Prise en charge intégrée des fichiers Nib" explique comment les fichiers nib sont chargés dans un certain nombre de cas.

1

Jetez un coup d'œil au fichier Info.plist.

L'une des sections contient le nom du fichier Nib principal. C'est la plume qui est désarchivée lorsque l'application démarre. Habituellement, c'est MainMenu.xib. Étant donné que l'objet contrôleur se trouve dans ce fichier nib principal, il est créé lorsque le fichier nib est désarchivé.