我以为我已经在我的代码中设置了所有内容(在堆栈上有两百万个愚蠢的问题后...感谢耐心:))
但是,当然,它在设备上运行时会崩溃。我有一个音板,在一个特定的按钮上,它崩溃并给出一个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];
}
任何帮助?
答案 0 :(得分:4)
我认为发布传递给您的player
并不明智,因为您没有明确分配,保留或复制它。
传递给你的玩家可能与你最初分配的对象不同。
我建议你在最初分配玩家时,保留对它的引用。当调用结束回调时,检查指针是否匹配,如果是,则释放指针(并将其指出)。
但我最好的猜测是,当您在突出显示的行上分配播放器时,它已经传递了一个nil路径字符串。您应该检查是否是错误。否则听起来像是一个记忆问题。