窗口控制器关闭不完全删除窗口

时间:2017-12-13 11:40:40

标签: swift macos cocoa

我有两个窗户。在第一个窗口中,我使用以下代码创建第二个:

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)

enter image description here

我尝试过这个选项,它没有帮助。如何从内存中完全删除窗口。

1 个答案:

答案 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完成工作