gpt4 book ai didi

iphone - 在 iPhone 上使用 AVAudioPlayer 时崩溃

转载 作者:行者123 更新时间:2023-12-03 21:11:23 25 4
gpt4 key购买 nike

我正在尝试使用 AVAudioPlayer 快速连续播放一些声音。当我不太频繁地调用声音播放函数以便在再次调用该函数之前完全播放声音时,应用程序运行良好。但是,如果我快速连续地快速调用该函数(以便在仍在播放之前的声音的同时播放声音),则该应用程序最终会在对该函数进行约 20 次调用后崩溃,并显示消息“EXC_BAD_ACCESS”。这是该函数的代码:

NSString *nsWavPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:wavFileName];

AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:nsWavPath] error:NULL];
theAudio.delegate = self;

[theAudio play];

正如另一个线程中提到的,我实现了以下委托(delegate)函数:

- (void) audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if(!flag)
NSLog(@"audio did NOT finish successfully\n");
[player release];
}

但在大约 20 次快速调用该函数后,应用程序仍然崩溃。知道我做错了什么吗?

最佳答案

首先:确保您没有尝试再次播放已经通过[player release]发布的声音;如果是,您会收到正确的错误消息离开。一旦释放与特定声音关联的播放器,您就无法再次播放该文件,如此处所示。尝试注释掉该行代码,看看它是否仍然发生。

我还遇到了一个问题,每次创建新的播放器时,AVAudioPlayer都会分配32kb,如果你有足够的声音,你可能会耗尽内存并获得一个碰撞。我非常怀疑这是你的问题,因为它通常不会抛出该错误代码。

EXC_BAD_ACCESS 通常是由于尝试访问不再存在的指针(例如您的 player 对象),对于我在该论坛上看到的大多数情况

关于iphone - 在 iPhone 上使用 AVAudioPlayer 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3050251/

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