我有两个窗户。在第一个窗口中,我使用以下代码创建第二个:
self.toolsWindowController = ToolsWindowController()
ToolsWindowController
是一个从Nib加载的简单窗口:
class ToolsWindowController: NSWindowController {
override var windowNibName : NSNib.Name! {
return NSNib.Name(rawValue: "ToolsWindow")
}
}
然后在第一个窗口中我关闭ToolWindow:
toolsWindowController?.close()
窗口仍然存在。重新开窗后,窗口数增加了。
print(NSApplication.shared.windows.count)
我尝试过这个选项,它没有帮助。如何从内存中完全删除窗口。
答案 0 :(得分:-2)
找到了一个在window = nil
方法中生成deinit
的解决方案。同样在我的情况下,我有一个window.styleMask.insert(.fullScreen)
全屏文件掩码,可以创建叠加窗口对象。所以你也需要删除它。
class ToolsWindowController: NSWindowController {
override var windowNibName : NSNib.Name! {
return NSNib.Name(rawValue: "ToolsWindow")
}
deinit {
NotificationCenter.default.removeObserver(self)
self.window?.styleMask.remove(.fullScreen)
self.window = nil
}
}
然后self.toolsWindowController=nil
完成工作