macOS の Storyboard 上で autosaveName を指定しても意味がない


2回もハマって腹が立ち、こんな悲しい思いを他の人にもして欲しくないために書いておきます。

Storyboard 上にある Window の Autosave 欄は巧妙な罠です。

xib と違い、Storyboard ではここに identifier を指定しても無視されます。
NSWindowController(サブクラス)の windowDidLoad() で書くのが正解。

override func windowDidLoad() {

    super.windowDidLoad()

    self.windowFrameAutosaveName = "Document Window"  // correct!
}

しかも、「念のため」などと Storyboard 上に windowDidLoad() で指定したのと同じ文字列が入れてると windowDidLoad() で指定したのごと無効になります。空欄(またはダミー文字列)にしておきましょう。

二重の罠!

cf. NSWindowController Autosave using Storyboard