2009-07-26 4 views
1

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

ответ

5

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

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

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

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

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

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