Die beste Methode zum Einrichten eines NSViewControllers, der mit initWithNibName initialisiert wurde: bundle :?

8

Ich habe eine Unterklasse von NSViewController, die ihre Ansicht von einer Nib lädt (mit initWithNibName: bundle: und es ist der Besitzer der Datei dieser Datei).

Ich muss einige Initialisierung durchführen, nachdem die Spitze geladen ist und ich möchte, dass mein Code der kompatibelste ist:

  • In ios: Dafür gibt es die Methode viewDidLoad
  • In osx: In snow leopard gibt es keine Methode wie viewDidLoad, aber wakeFromNib wird auch beim Besitzer der Datei der Datei aufgerufen

Meine Fragen sind also:

  1. Wird awakeFromNib auch beim Eigentümer der Datei in Lion aufgerufen?
  2. Wenn ich watchFromNib verwende, muss ich [super watchFromNib] anrufen? (Implementiert NSViewController wakeFromNib?)
  3. Wenn Antwort 1 JA ist, ist das eine gute Lösung? :
%Vor%

Wenn Antwort 1 NEIN ist, ist das eine gute Lösung? :

%Vor%

Danke

    
Johnmph 05.04.2012, 12:13
quelle

1 Antwort

4

Hier ist was ich gefunden habe:

  1. Ja, awakeFromNib : wird auch für den Eigentümer der Datei in Lion aufgerufen (und normalerweise ist es für den neuen Mountain Lion identisch).

  2. Ab OSX 10.6 gibt es eine Kategorie in NSObject , die awakeFromNib hinzufügt, so dass es sicher ist, [super awakeFromNib] von einer beliebigen Unterklasse aufzurufen. Für OSX vor 10.6 können wir instancesRespondToSelector verwenden: um zu wissen, ob die Elternklasse awakeFromNib implementiert, darf die NSView oder NSObject Unterklasse [super awakeFromNib] nicht aufrufen.

Johnmph 28.07.2012, 15:10
quelle