如何发布NSColorPanel?

时间:2016-03-07 17:01:02

标签: swift cocoa nscolorpanel nscolorwell

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

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

如何关闭窗口但让用户再次启动颜色?具体来说,我将颜色井的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)
}

1 个答案:

答案 0 :(得分:2)

NSColorPanel是一个单身,懒得加载。只能创建NSColorPanel的一个实例。彩色面板在第一次sharedColorPanel呼叫时加载到内存中。如果您将发布此面板,则下次访问时应用程序将崩溃,因为NSColorPanel类保留对已发布实例的引用。在sharedColorPanel使用后,Apple不提供清除资源的方法。