Ich lerne Cocoa und mein Verständnis aus dem Lesen der Dokumentation ist, dass wenn eine Anwendung startet das folgende passiert:
Das ist gut und sinnvoll für s single windowed Anwendung, aber ich bin verwirrt, was xcode tut, wenn eine dokumentbasierte Anwendung erstellt wird.
In diesem Fall gibt es zwei Nib-Dateien; Das erste enthält das Anwendungsmenü und das zweite enthält das Fenster, das die Unterklasse NSDocument darstellt. Wenn ich die Anwendung starte, wird automatisch ein neues Dokumentfenster geöffnet.
Aufgrund meines Verständnisses, wie die Anwendung oben beschrieben funktioniert, verstehe ich nicht, wie meine Anwendung das Dokumentfenster zu öffnen weiß, sobald die Menüspitze aus der Eigenschaftsliste nachgeschlagen wurde. Soweit ich es sehen kann, wird dafür kein Code generiert (außer für die windowNibName -Methode, aber wo wird diese aufgerufen?)
Kann mir jemand sagen, was xcode anders macht, damit die Anwendung weiß, dass es dokumentenbasiert ist und daher ein Dokumentfenster öffnen muss?
Aktualisierung:
Was ich versuche zu verstehen, ist, wie Xcode weiß, wie man etwas anders macht, wenn meine Anwendung als eine dokumentenbasierte Anwendung und nicht als eine einzelne Fensteranwendung eingerichtet wird. Soweit ich weiß, gibt es keine Einstellung, um dies zu spezifizieren, und Xcode scheint keinen Code zu erzeugen, der dieses unterschiedliche Verhalten hervorruft.
Aus dem Lesen der Dokumente der letzten Tage denke ich Ich weiß, wie das funktioniert, bin mir aber nicht sicher:
Hoffentlich können alle Cocoa-Experten bestätigen, ob mein Verständnis stimmt oder ob ich den falschen Baum anbreche.
Wenn Sie eine dokumentbasierte Anwendung erstellen, erhalten Sie einige Dinge:
Wenn Ihre App geöffnet wird, erstellt der freigegebene NSDocumentController ein neues Dokument ohne Titel mit den CFBundleDocumentTypes-Informationen.
Weitere Informationen finden Sie unter Die dokumentbasierte Anwendungsprojektvorlage und der Rest des dokumentenbasierten Anwendungsleitfadens.
Ich nehme dein Recht an. Wenn Sie eine nicht-basierte Dokumentanwendung erstellen, fügen Sie die Dokumenttypinformationen in der -Info.plist hinzu und legen Sie den Delegaten von NSApplication in der Datei main.m wie folgt fest
%Vor%Das Verhalten scheint mit der standardmäßigen dokumentenbasierten Anwendungsvorlage identisch zu sein.
Nein, Ihre Annahme stimmt nicht, schauen Sie sich die Implementierung der GNUstep-Version in der finishLaunching-Methode von NSApplication an:
%Vor%So wird automatisch eine Instanz von NSDocumentController erstellt.