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)
当我单击按钮时,窗口仅打开一会儿,然后在几毫秒后消失。
有人可以帮我吗?似乎我对可可的观点有相当严重的误解;-)
谢谢汤姆
问题在于您正在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)没有区别。通过nil或self可以。但是,后者(您如何做到这一点)更有意义。