Cocoa Window 在 macOS Sierra 上不显示

Cocoa Window Not Showing on macOS Sierra

我有以下代码可以在我的 macOS 应用程序中显示新的 window。这是在 NSOpenPanelcompletionHandler 之内。

let mainStoryBoard = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"), bundle: nil)
let windowController = mainStoryBoard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier(rawValue: "WindowController")) as! NSWindowController
let myController = windowController.window!.contentViewController as! ViewController
myController.imageView.image = mainImage
windowController.showWindow(self)

mainImage 定义在上面。

问题是此代码在 macOS High Sierra 上完美运行,但在 macOS Sierra 上 window 有时会显示一瞬间然后消失。

为什么这适用于 macOS High Sierra 而不是 macOS Sierra?

我能够通过修复 windowController 的范围来解决这个问题。将变量的声明移到完成处理程序上方并将其设置为 nil 以开始修复问题。

我还添加了 NSWindowDelegate 并使用函数 windowWillClosewindowController 设置回 nil 以确保它被正确释放。

取消选中 NSWindow 的延迟选项。