SIGABRT与AVAudioPlayer

时间:2011-05-03 23:39:34

标签: iphone objective-c

我以为我已经在我的代码中设置了所有内容(在堆栈上有两百万个愚蠢的问题后...感谢耐心:))

但是,当然,它在设备上运行时会崩溃。我有一个音板,在一个特定的按钮上,它崩溃并给出一个SIGABRT信号,并在线程中突出显示:

NSString *path = [[NSBundle mainBundle] pathForResource:aSound ofType:@"mp3"];
**AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];**
[theAudio setDelegate: self];
[theAudio setNumberOfLoops:0];
[theAudio setVolume:1.0];
[theAudio play];

我已经这样发布了它:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
    [player release];
}

任何帮助?

1 个答案:

答案 0 :(得分:4)

我认为发布传递给您的player并不明智,因为您没有明确分配,保留或复制它。

传递给你的玩家可能与你最初分配的对象不同。

我建议你在最初分配玩家时,保留对它的引用。当调用结束回调时,检查指针是否匹配,如果是,则释放指针(并将其指出)。

但我最好的猜测是,当您在突出显示的行上分配播放器时,它已经传递了一个nil路径字符串。您应该检查是否是错误。否则听起来像是一个记忆问题。