1

我有一个使用多个 AVAudioPlayer 对象来播放音乐的应用程序。在 iOS6 上,此应用程序在被来电中断时崩溃。在 iOS 4.3、5.0 或 5.1 上不会出现此问题。当应用程序崩溃时,会看到以下堆栈跟踪。

(lldb) 线程回溯 * 线程 #1: tid = 0x2403, 0x3b905e64 libsystem_c.dylib pthread_mutex_lock + 388, stop reason = instruction step over frame #0: 0x3b905e64 libsystem_c.dylibpthread_mutex_lock + 388 帧 #1: 0x3299bd18 AVFoundation AVAudioPlayerCpp::sessionPropertyListener(unsigned long, unsigned long, void const*) + 124 frame #2: 0x33200b32 AudioToolboxAudioSessionPropertyListeners::CallPropertyListenersImp(unsigned long, unsigned long, void const*) + 170 帧 #3: 0x33Tool2008cc Audiobox AudioSessionPropertyListeners::CallPropertyListeners(unsigned long, unsigned long, void const*) + 244 frame #4: 0x332b4afc AudioToolboxASCallbackReceiver_AudioSessionInterruptionListenerMessage + 184 frame #5: 0x33389dde AudioToolbox _XAudioSessionInterruptionListenerMessage + 70 frame #6: 0x3320058a AudioToolboxmshMIGPerform + 382 frame #7: 0x337a33e6 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 34 frame #8: 0x337a338a CoreFoundation__CFRunLoopDoSource1 + 138 frame #9: 0x337a220e CoreFoundation __CFRunLoopRun + 1382 frame #10: 0x3371523c CoreFoundationCFRunLoopRunSpecific + 356 frame #11: 0x337150c8 CoreFoundation CFRunLoopRunInMode + 104 frame #12: 0x372f433a GraphicsServicesGSEventRunModal + 74 frame #13: 0x356312b8 UIKit`UIApplicationMain + 1120

我添加了 applicationWillResignActive 并且在发生崩溃时不会调用它。我还添加了我的应用程序委托作为 AVAudioPlayer 对象的委托,并实现了 audioPlayerBeginInterruption 方法。发生崩溃时也不会调用此方法。如果我只使用 1 或 2 个 AVAudioPlayer 对象,崩溃就会消失。崩溃发生在另外 3 个 AVAudioPlayer 对象上,尽管其中只有 2 个在给定时间播放,其余的已停止。

有没有人见过这种问题或有任何提示?

谢谢。

4

0 回答 0