如何有效地分配NSStatusItem图像和替代图像?

时间:2009-07-26 10:11:04

标签: objective-c cocoa nstimer nsimage nsstatusitem

假设我有这样的代码......

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

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

我还想为状态项设置动画,因此我创建了6个“更新”状态项图标的变体,并将其循环到NSTimer上,其目标方法与上述类似。问题是:

  1. 如何有效地分配图像?例如如果我使用保留/预加载的NSImage,可以吗?
  2. 有没有办法以更有效的方式为状态项设置动画?我不知道任何核心动画的东西,所以请耐心等待。

1 个答案:

答案 0 :(得分:5)

正如谚语所说,过早优化是万恶之源。首先测量,然后优化任何慢速,然后再次测量以确保它有所帮助。

那就是说,imageNamed: 很慢。你几乎总是应该使用NSBundle而不是-[NSImage initWithContentsOfFile:]

  

如果我使用保留/预加载的NSImage,可以吗?

你为什么不呢?为什么状态项会关心图像是否被其他东西保留?

  

有没有办法以更有效的方式为状态项设置动画?

setImage:是唯一的方法。只要您不是每次都加载每个图像,就应该没有效率问题。