如何释放 NSColorPanel?

How to release NSColorPanel?

我想在用户点击 NSColorWell 时启动 NSColorPanel。当用户点击颜色井时面板打开,但即使在用户关闭面板后面板的实例也会保留。

所以我将它的 releasedWhenClosed 设置为 true。但是,这次当用户关闭 window 时面板会正确释放,但下次用户通过点击相同颜色的井打开面板时,应用程序会崩溃,因为面板实例已经消失。

如何关闭 window 但让用户再次启动颜色井?具体来说,我将颜色井的 activate: 方法设置为以下内容:

override func activate(exclusive: Bool) {
    NSColorPanel.sharedColorPanel().showsAlpha = true // the app crashes here the next time the user opens the color well
    super.activate(exclusive)
}

NSColorPanel 是一个单例,即延迟加载。只能创建一个 NSColorPanel 实例。颜色面板在第一次 sharedColorPanel 调用时加载到内存中。如果您释放此面板,应用程序将在您下次访问它时崩溃,因为 NSColorPanel class 保留对已释放实例的引用。 Apple 不提供在 sharedColorPanel 使用后清除资源的方法。