Как эффективно назначать изображения NSStatusItem и альтернативные изображения?
-
19-09-2019 - |
Вопрос
Допустим, у меня есть такой код...
- (id) init {
...
self.myImage1 = [NSImage imageNamed:@"some_image_name"]; // setter retains
...
}
- (void) setStatusItemImage
{
[self.statusItem setImage:self.myImage1];
}
Я также хочу анимировать элемент состояния, поэтому я создал 6 вариантов значка элемента состояния «обновление» и зациклил его на NSTimer с целевым методом, аналогичным приведенному выше.Вопросы:
- Как я могу эффективно назначить изображение?напримернормально ли я использовать сохраненный/предварительно загруженный NSImage?
- Есть ли способ более эффективно анимировать элемент статуса?Я ничего не знаю о Core Animation, поэтому, пожалуйста, будьте терпеливы.
Решение
Как гласит пословица, преждевременная оптимизация — корень всех зол.Сначала измерьте, затем оптимизируйте все, что работает медленно, а затем измерьте еще раз, чтобы убедиться, что это помогло.
Тем не менее, imageNamed:
является медленный.Вы почти всегда должны использовать NSBundle и -[NSImage initWithContentsOfFile:]
вместо.
нормально ли я использовать сохраненный/предварительно загруженный NSImage?
Почему бы и нет?И почему элемент статуса должен заботиться о том, сохраняется ли изображение чем-то другим или нет?
Есть ли способ более эффективно анимировать элемент статуса?
setImage:
это единственный путь.Пока вы не загружаете каждое изображение каждый раз, у вас не должно возникнуть проблем с эффективностью.