我想在用户点击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)
}
答案 0 :(得分:2)
NSColorPanel
是一个单身,懒得加载。只能创建NSColorPanel
的一个实例。彩色面板在第一次sharedColorPanel
呼叫时加载到内存中。如果您将发布此面板,则下次访问时应用程序将崩溃,因为NSColorPanel
类保留对已发布实例的引用。在sharedColorPanel
使用后,Apple不提供清除资源的方法。