Как выпустить NSColorPanel?
Я хочу сделать 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 ответ
NSColorPanel
это одиночка, которая загружается лениво. Только один экземпляр NSColorPanel
может быть создан. Цветная панель загружается в память первой sharedColorPanel
вызов. Если вы отпустите эту панель, приложение будет аварийно завершать работу при следующем обращении к ней, поскольку NSColorPanel
класс хранит ссылку на освобожденный экземпляр. Apple не предоставляет способ очистить ресурсы после sharedColorPanel
использование.