gpt4 book ai didi

objective-c - 如何调试为什么声音无法通过 AVAudioPlayer 播放?

转载 作者:行者123 更新时间:2023-12-03 17:33:09 25 4
gpt4 key购买 nike

我有一个简单的 iPhone 应用程序,其中已经播放了几种声音。然而,有一个人特别不会。我破解的代码块是:

NSString *soundPath2 = [[NSBundle mainBundle] pathForResource:@"gameover" ofType:@"wav"];
NSURL *soundFileURL2 = [NSURL fileURLWithPath:soundPath2];
NSError *err;
AVAudioPlayer *sound2 = [[[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL2 error:&err] autorelease];
NSLog(@"Error: %@", [err description]);
NSLog(@"Duration: %f ", [sound2 duration]);
BOOL b = [sound2 play];
NSLog(@"Play Bool: %d", b);

控制台显示错误为空, bool 值返回true,甚至持续时间都是正确的!然而,玩耍没有任何作用。如果我将“游戏结束”更改为另一种声音(简单的蜂鸣声),一切都很好。

虽然让它运行起来很棒,但我也很难理解错误条件等。我可以检查 1) 知道它失败了,2) 为什么。

声音问题可在 http://wdr1.com/gameover.wav 找到.

最佳答案

问题是您不应该自动释放 AVAudioPlayer。 play 方法是异步发生的,如果玩家被自动释放,那么没有任何东西可以保留它,它就会死掉。

播放器在委托(delegate)中播放完毕后,您应该释放音频播放器:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)audioPlayer successfully:(BOOL)flag

关于objective-c - 如何调试为什么声音无法通过 AVAudioPlayer 播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com