Al fine di ripristinare una finestra, è possibile impostare l'ID Restauro di Interface Builder. Questo sarà usato come parte della chiave sotto la quale il frame è memorizzato in NSUserDefaults. - ma quello non ha (sempre) funzionato per me.
NSWindow
ha setFrameUsingName(_:)
per configurare questo, come @BadmintonCat ha scritto, ed è anche possibile serializzare manualmente la posizione della finestra, nel caso in cui non funziona, neanche.
La soluzione più semplice nella mia app era usare la proprietà NSWindowController.windowFrameAutosaveName
e impostarla su qualcosa in awakeFromNib(_:)
. Quella singola riga influiva sul caricamento e sul salvataggio con successo.
Se si utilizza un NSWindowController, non uso il campo Interface Builder autoSaveName. Vedi la risposta di Gon sotto. In particolare in 'metodo -windowDidLoad' del controller della finestra, chiamare: ' [super windowDidLoad]; '' [auto setShouldCascadeWindows: NO]; '' [auto setWindowFrameAutosaveName: @ "MyWindowAutosaveName"]; ' – Womble