Я вижу термин cache
в вашем коде и некоторые предположения:
Похоже, вы загружаете изображения, затем манипулируете ими и сохраняете манипулированные изображения для последующего использования.Есть несколько вещей, о которых вам нужно позаботиться:
Прежде всего, убедитесь, что текущий внешний вид установлен правильно, когда вы выполняете загрузку / манипулирование изображением.Помимо drawRect:
и нескольких других методов, вы всегда должны выполнять танец, подобный следующему:
NSAppearance * savedAppearance = [NSAppearance currentAppearance];
[NSAppearance setCurrentAppearance:someView.effectiveAppearance];
// Do your image/color/drawing stuff.
[NSAppearance setCurrentAppearance:savedAppearance];
Помните, что внешний вид «ограничен» определенным видом!Вы можете иметь разные представления в одной и той же иерархии представлений.
Вам нужно либо переопределить viewDidChangeEffectiveAppearance
вашего NSView
, либо KVObserve effectiveAppearance
представления, чтобы получать уведомления об изменениях внешнего вида и реагировать соответствующим образом (пересоздать заново)ваши иконки).