我想让NSColorPanel在用户点击NSColorWell时启动。当用户很好地点击颜色时,面板就会打开,但是即使在用户关闭面板之后,面板的实例也会被保存。
因此,我将其releasedWhenClosed设置为true。然而,这一次,当用户关闭窗口时,面板就会正常释放,但是下次用户通过点击相同的颜色打开面板时,应用程序会崩溃,因为面板实例已经消失了。
怎样才能关闭窗口,让用户重新启动颜色呢?具体来说,我将color的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)
}发布于 2016-03-07 17:34:01
NSColorPanel是一个单独的例子,它是懒惰加载的。只能创建一个NSColorPanel实例。在第一次sharedColorPanel调用时,颜色面板被加载到内存中。如果您要发布这个面板,下次您将访问它时,应用程序将崩溃,因为NSColorPanel类保留对已释放实例的引用。苹果并没有提供一种在sharedColorPanel使用后清除资源的方法。
https://stackoverflow.com/questions/35849582
复制相似问题