Как эффективно назначать изображения 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, так что, пожалуйста, потерпите меня.

person jopes    schedule 26.07.2009    source источник


Ответы (1)


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

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

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

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

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

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

person Peter Hosey    schedule 26.07.2009