El guión gráfico de OS X llama a viewDidLoad antes de applicationDidFinishLaunching

Creé una aplicación para Mac OS X en Xcode usando guiones gráficos. Por alguna razón elapplicationDidFinishLaunching El método en AppDelegate se llama despuésviewDidLoad en los NSViewControllers. Al igual que con las aplicaciones de iOS, penséviewDidLoad se supone que debe llamarse antesapplicationDidFinishLaunching? ¿Los guiones gráficos en las aplicaciones de OS X inicializan los controladores de vista antes de que la aplicación haya terminado de iniciarse?

Estoy usando elapplicationDidFinishLaunching Método para registrar la configuración predeterminada en NSUserDefaults. Desafortunadamente, el registro de los valores predeterminados ocurre después de que se cargan las vistas en el guión gráfico. Por lo tanto, cuando configuro la vista en cada controlador de vista usandoviewDidLoad, los datos predeterminados en NSUserDefaults no se han establecido. Si no puedo usarapplicationDidFinishLaunching registrar NSUserDefaults en las aplicaciones de guión gráfico de OS X, luego cómo configuro los valores predeterminados antesviewDidLoad ¿se llama?

Para solucionar este problema, en elMain.storyboard en Xcode, apagué "Is Initial Controller" para la ventana principal. Asigne una ID de guión gráfico a la ventana principal como "Ventana principal". Luego, en AppDelegate, ingresé el siguiente código:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationDidFinishLaunching(aNotification: NSNotification) {

        let storyboard = NSStoryboard(name: "Main", bundle: nil)
        let mainWindow = storyboard.instantiateControllerWithIdentifier("MainWindow") as! NSWindowController
        mainWindow.showWindow(nil)
        mainWindow.window?.makeKeyAndOrderFront(nil)

    }
}

La aplicación no se bloquea pero ahora la ventana nunca aparece. La siguiente imagen muestra el guión gráfico con el que estoy trabajando:

Respuestas a la pregunta(4)

Su respuesta a la pregunta