我是Swift的初学者,所以这可能是一个愚蠢的问题,但我无法弄清楚它是如何工作的......
我有一个带有按钮的视图,里面调用以下代码:
let window = NSWindow()
window.center()
window.title = "test"
window.makeKeyAndOrderFront(self)
当我点击按钮时,窗口会打开一会儿,几毫秒后会消失。
任何人都可以帮助我吗?我似乎对Cocoa中的观点存在相当严重的误解; - )
由于 汤姆
答案 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)
的提示没有任何区别。通过nil
或self
都可以。但后者,你最初是如何做到的,更有意义。