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
,因此正在解除分配窗口控制器。这就是导致很多问题的原因,包括这个问题。我也因此遇到了其他问题