我在将NSsound实例添加到NSMutableArray时遇到问题
我得到的错误是我不能执行[soundFiles addObject:soundObj],因为soundObjnil。但是,如果我执行[soundObj play],它将播放-因此它是一个实例。

//Name of all the sounds to load in.
sounds = [NSArray arrayWithObjects:
      @"sound1",
      @"sound2",
      nil];


for (int i = 0; i < sounds.count; i++) {
    NSString *soundName = [NSString stringWithString:sounds[i]];
    NSSound *soundObj = [NSSound soundNamed:soundName];
    [soundFiles addObject:soundObj];
}


如果我将[soundFiles addObject:soundObj]更改为[soundFiles addObject:soundName]很好,那么可以尝试通过NSSound

我希望能够预加载一堆非常短的声音,以使它们在被调用的那一刻就播放。毫秒对这个项目很重要。

我希望这可以让我做[[soundFiles objectAtIndex:1] play]-因为我想这将导致它比在播放它时创建NSSound对象更快。

最佳答案

您可能已经知道了这一点,但是我想您是在创建所有要使用的声音文件之前编写代码的。因此,当您尝试为这些不存在的文件创建NSSound实例时,它设置为nil。很难进行故障排除,因为当您将NSSound指向不存在的文件时,它不会引发错误。

在创建所有我想使用的声音文件之前,我遇到了同样的问题。我只想发布我的答案,以帮助遇到此问题的其他任何人,因为Google搜索没有任何帮助。

09-27 23:00