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