Как выпустить 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 использование.

Другие вопросы по тегам