我想在用户点击NSColorPanel时启动NSColorWell。当用户点击颜色井时,面板打开,但即使在用户关闭面板后,面板的实例也将保持。
所以我把它的releasedWhenClosed设置为true。不过,这一次当用户关闭窗口时,面板被正确释放,但下一次用户通过点击相同颜色的窗口打开面板时,应用程序会崩溃,因为面板实例已经消失。
如何关闭窗口,但让用户重新启动颜色?具体来说,我将color well的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之后,苹果没有提供清除资源的方法。

10-07 18:34