Как эффективно назначать изображения NSStatusItem и альтернативные изображения?

StackOverflow https://stackoverflow.com/questions/1184199

Вопрос

Допустим, у меня есть такой код...

- (id) init {
    ...
    self.myImage1 = [NSImage imageNamed:@"some_image_name"]; // setter retains
    ...
}

- (void) setStatusItemImage
{
    [self.statusItem setImage:self.myImage1];
}

Я также хочу анимировать элемент состояния, поэтому я создал 6 вариантов значка элемента состояния «обновление» и зациклил его на NSTimer с целевым методом, аналогичным приведенному выше.Вопросы:

  1. Как я могу эффективно назначить изображение?напримернормально ли я использовать сохраненный/предварительно загруженный NSImage?
  2. Есть ли способ более эффективно анимировать элемент статуса?Я ничего не знаю о Core Animation, поэтому, пожалуйста, будьте терпеливы.
Это было полезно?

Решение

Как гласит пословица, преждевременная оптимизация — корень всех зол.Сначала измерьте, затем оптимизируйте все, что работает медленно, а затем измерьте еще раз, чтобы убедиться, что это помогло.

Тем не менее, imageNamed: является медленный.Вы почти всегда должны использовать NSBundle и -[NSImage initWithContentsOfFile:] вместо.

нормально ли я использовать сохраненный/предварительно загруженный NSImage?

Почему бы и нет?И почему элемент статуса должен заботиться о том, сохраняется ли изображение чем-то другим или нет?

Есть ли способ более эффективно анимировать элемент статуса?

setImage: это единственный путь.Пока вы не загружаете каждое изображение каждый раз, у вас не должно возникнуть проблем с эффективностью.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top