Cocoa NSWindowController中是否支持encodeRestorableState()?

Cocoa NSWindowController中是否支持encodeRestorableState()?,cocoa,appkit,nswindowcontroller,Cocoa,Appkit,Nswindowcontroller,就我个人而言,我无法理解。我想我尽了一切努力在我的NSWindowController子类中调用encodeRestorableState(with:)方法,但它就是没有 在花了几个小时在这上面之后,我想它实际上可能根本不被支持。那是什么意思 请注意,它表示要使用该方法,而不是覆盖/实现该方法。也许这就是我弄错的地方 更新 进一步挖掘,我发现我在NSWindowController子类中创建的窗口的windowController属性设置为nil。我想这就是为什么窗口不告诉控制器对其状态进行

就我个人而言,我无法理解。我想我尽了一切努力在我的
NSWindowController
子类中调用
encodeRestorableState(with:)
方法,但它就是没有

在花了几个小时在这上面之后,我想它实际上可能根本不被支持。那是什么意思

请注意,它表示要使用该方法,而不是覆盖/实现该方法。也许这就是我弄错的地方


更新
进一步挖掘,我发现我在
NSWindowController
子类中创建的窗口的
windowController
属性设置为
nil
。我想这就是为什么窗口不告诉控制器对其状态进行编码的原因。我现在正在弄清楚为什么它是
nil

尝试为您的NSViewController/NSWindowController子类调用
invalidateRestorableState()
。稍后将调用
encodeRestorableState(with:)

最终找到了答案。基本上,这就是我在
AppDelegate
中创建窗口控制器的方式:

MainWindowController().showWindow(self)
我没有保留对窗口控制器实例的任何引用,并且由于
NSWindow
windowController
属性是
weak
,因此正在解除分配窗口控制器。这就是导致很多问题的原因,包括这个问题。我也因此遇到了其他问题