AVAudioPlayer间歇性崩溃

时间:2012-01-09 16:47:52

标签: ios audio media avaudioplayer

我有一个大量使用音频的应用程序。我使用AVAudioPlayers来简化任务。

我注意到使用这些玩家时不时会发生崩溃,通常是在我打电话给[玩家玩]时。堆栈跟踪看起来像这样:

EXC_BAD_ACCESS
#0  0x32d531e6 in memmove$VARIANT$CortexA8 ()
#1  0x351056dc in Cached_DataSource::ReadFromHeaderCache ()
#2  0x351052a4 in Cached_DataSource::ReadBytes ()
#3  0x350ba47c in AudioFileObject::ReadBytes ()
#4  0x35104562 in AudioFileObject::ReadPacketDataVBR ()
#5  0x35102c70 in AudioFileObject::ReadPacketData ()
#6  0x351020b2 in AudioFileReadPacketData ()
#7  0x36bad1b8 in AudioPlayerAQOutputCallbackCore ()
#8  0x36bad7a4 in prepareToPlayQueue ()
#9  0x36bad954 in playQueue ()
#10 0x36bac27e in -[AVAudioPlayer play] ()

我在每次dealloc调用中都设置了断点,所以我知道我不会无意中释放一个玩家或代表或类似的东西。

在播放完整的声音之前,播放器有时会停止播放,所以我总是在播放前进行[播放器setCurrentTime:0]呼叫。我不确定这是否会导致一些负面影响。

显然,音频队列正在尝试访问无效内存,但是根据文件缓存代码中存储器的内容,我无法看到我正在做的任何事情会影响它。我正在播放的所有文件都作为主要包中的资源包含在内。

我创建了一个repro,可以在4.1模拟器和我的5.0.1设备上可靠地重现它。在崩溃之前,可能需要一段时间和数百次调用setCurrentTime,播放和停止。

我需要深究这一点。如果需要,我可以开始移植所有代码以使用音频队列或其他东西,但我想确保没有我遗漏的东西或者我可以做的不同以使其更稳定。

0 个答案:

没有答案