Swift NSWindow出现并立即消失

cod*_*lic 2 macos cocoa nswindow swift

我是Swift的初学者,所以这可能是一个愚蠢的问题,但我不知道这是如何工作的...

我有一个带有按钮的视图,其中调用以下代码:

let window = NSWindow()
window.center()
window.title = "test"
window.makeKeyAndOrderFront(self)
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时,窗口仅打开一会儿,然后在几毫秒后消失。

有人可以帮我吗?似乎我对可可的观点有相当严重的误解;-)

谢谢汤姆

Ste*_*ntz 5

问题在于您正在NSWindow按钮动作功能中创建和“存储” 。这意味着,一旦完成该按钮操作,NSWindow就会脱离上下文,并被释放并因此消失。

这就是Swift中内存管理的工作方式:一旦没有人拥有对象,它就会被释放。

您应该做的是将窗口放在实例变量中。例如:

class YourViewController: NSViewController {
    private var window: NSWindow!

    @IBAction func buttonAction(sender: UIButton) {
        window = NSWindow()
        window.center()
        window.title = "test"
        window.makeKeyAndOrderFront(self)    
    }
}
Run Code Online (Sandbox Code Playgroud)

关于的提示makeKeyAndOrderFront(nil)没有区别。通过nilself可以。但是,后者(您如何做到这一点)更有意义。