Ich habe meinem Anwendungsdelegaten eine applicationShouldOpenUntitledFile
-Methode hinzugefügt, die NO
zurückgibt, wie in der Dokumentation von Apple angegeben. Allerdings erhalte ich beim Start immer noch ein neues Dokument. Was ist los?
Sie betreiben Lion. Wenn Sie vor dem Hinzufügen des applicationShouldOpenUntitledFile
-Handlers ausgeführt haben, wurde ein neues Dokument erstellt. Mit 10.7 "Fenster beim Beenden und erneuten Öffnen von Apps wiederherstellen" stellt Ihre Anwendung das this unbenannte Fenster wieder her und erstellt kein neues, wie Sie annehmen.
Schließen Sie das Fenster und führen Sie Ihre Anwendung erneut aus, und applicationShouldOpenUntitledFile
wird aufgerufen und unterdrückt die Erstellung einer neuen Datei ohne Titel.
Wenn Sie nicht mit Lion / 10.7 oder höher betreiben, kann dies immer noch passieren, wenn Sie ein anderes -Fenster geöffnet haben (sogar ein Nicht-Dokument-Fenster), wenn applicationShouldOpenUntitledFile
sollte aufgerufen werden.
Ich habe eine dokumentenbasierte App, bei der die AppDelegate-Klasse ein globales Protokollierungsfenster sowohl für Debuggingzwecke als auch für Benutzerstatusmeldungen öffnet. Wenn das Programm dieses Fenster beim Start unter OS X 10.6 anzeigt, wird applicationShouldOpenUntitledFile
niemals aufgerufen, auch wenn keine Dokumentfenster angezeigt werden. Wenn ich dieses Fenster ausschalte, wird der Anruf getätigt.
Seit OSX Lion kann die Statuswiederherstellung der App Ihre benutzerdefinierten Einstellungen für diese Übung beeinträchtigen.
Unter Berufung auf ein Update auf Aaron Hillegass und Adam Prebles Buch Cocoa Programming für MacOSX :
Beachten Sie, dass die Statuswiederherstellungsfunktionen von Mac OS X Lion die Einhaltung der neuen Dokumentpräferenz möglicherweise erschweren. Sie können die Statuswiederherstellung deaktivieren, indem Sie das Ausführungsschema in Xcode bearbeiten. Öffnen Sie das Produktmenü und wählen Sie Schema bearbeiten. Wählen Sie das Run RaiseMan.app-Schema aus, wechseln Sie in den Bereich Optionen, und aktivieren Sie die Option Statuswiederherstellung deaktivieren.
Ich verwende Xcode 8.3.2 und kompiliere für Os X 10.11 mit einem Storyboard für eine dokumentenbasierte App. Ich bemerkte, dass, wenn Sie den Fenstercontroller als initialen Controller festlegen, ein Fenster ohne jedes Dokument und ohne Aufruf von applicationShouldOpenUntitledFile erstellt wird.
Ich habe das Entfernen des Kontrollkästchens "is initial controller" im Storyboard gelöst.