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

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

- (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, поэтому, пожалуйста, потерпите меня.

1 ответ

Решение

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

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

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

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

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

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

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