我有一个没有窗口的应用程序,“Application is agent”设置为YES。在那个应用程序中,我有一个“let mainWindow:NSWindow”,点击一个菜单项我会做以下事情:
func createNewWindow(){
mainWindow.center()
mainWindow.hidesOnDeactivate = true
mainWindow.isMovableByWindowBackground = true
mainWindow.backgroundColor = NSColor(calibratedHue: 0, saturation: 0, brightness: 1, alpha: 0.4)
mainWindow.contentViewController = searchView
mainWindow.makeKeyAndOrderFront(nil)
NSApp.activate(ignoringOtherApps: true)
}
如果我在窗口外单击或以任何方式将焦点转移到另一个应用程序,我的窗口关闭,我必须单击我的菜单项再次打开它。现在这就是我想要的,所以这很棒。但是如果我在视图控制器中调用“self.view.window?.close()”并在单击我的菜单项后再次打开我的窗口,那么在访问mainWindow时我得到了一个错误的访问权限,所以我猜是有什么设置它当我把它关闭时,它就是零。
如何以与在窗口外单击时相同的方式关闭窗口?或者我该如何防止错误的访问错误?
谢谢你 索伦
答案 0 :(得分:1)
某些,你在关闭窗口时将其设置为nil
。
如果窗口设置为关闭时释放,则发布释放消息 在当前事件完成后发送到对象。为
NSWindow
对象,默认是在关闭时释放,而对于NSPanel
对象,默认情况下不会被释放。你可以使用isReleasedWhenClosed
属性可更改默认行为。
更改行为或致电不会释放窗口的orderOut(_:)
。