2009-07-26 48 views
1

比方說,我有這樣的代碼...如何有效分配NSStatusItem圖像和交替圖像?

- (id) init { 
    ... 
    self.myImage1 = [NSImage imageNamed:@"some_image_name"]; // setter retains 
    ... 
} 

- (void) setStatusItemImage 
{ 
    [self.statusItem setImage:self.myImage1]; 
} 

我也想動畫,所以我創建了「更新」狀態的項目圖標和循環過來一個NSTimer的6個變種的狀態項,與目標方法類似於上述。問題是:

  1. 如何有效地分配圖像?例如如果我使用保留/預加載的NSImage,可以嗎?
  2. 有沒有辦法以更高效的方式爲狀態項設置動畫?我不知道任何核心動畫的東西,所以請忍受我。

回答

5

正如諺語所說,不成熟的優化是萬惡之源。先測量一下,然後優化一切慢,然後再測量一下,以確保它有幫助。

那就是說,imageNamed:慢。您幾乎總是應該使用NSBundle和-[NSImage initWithContentsOfFile:]來代替。

是否可以,如果我使用保留/預裝NSImage?

你爲什麼不呢?爲什麼狀態項會關心圖像是否被別的東西保留了?

有沒有辦法以更有效的方式爲狀態項設置動畫?

setImage:是唯一的方法。只要你沒有每次加載每個圖像,你就應該沒有效率問題。