我想在用户点击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
之后,苹果没有提供清除资源的方法。