Swift NSWindow立刻出现并消失

时间:2015-04-01 19:59:12

标签: macos cocoa swift nswindow

我是Swift的初学者,所以这可能是一个愚蠢的问题,但我无法弄清楚它是如何工作的......

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

let window = NSWindow()
window.center()
window.title = "test"
window.makeKeyAndOrderFront(self)

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

任何人都可以帮助我吗?我似乎对Cocoa中的观点存在相当严重的误解; - )

由于 汤姆

1 个答案:

答案 0 :(得分: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)    
    }
}

关于makeKeyAndOrderFront(nil)的提示没有任何区别。通过nilself都可以。但后者,你最初是如何做到的,更有意义。