2011-01-10 73 views
1

我开发了一款可播放不同音乐文件的iPhone应用程序。除非有来电打断播放,否则一切正常。这崩溃,并显示以下日志应用程序:使用AVAudioPlayer播放音频文件和来电中断播放时iPhone崩溃

开始崩溃日志

Thread 0 Crashed: 

0 libobjc.A.dylib     0x32d98f20 objc_msgSend + 20 
1 AVFoundation     0x30739ddc AVAudioSessionPropertyListener(void*, unsigned long, unsigned long, void const*) + 284 
2 AudioToolbox     0x36d78bec SSServer_AudioSessionInterruptionListenerMessage + 316 
3 AudioToolbox     0x36d017bc _XAudioSessionInterruptionListenerMessage + 128 
4 AudioToolbox     0x36c68584 mshMIGPerform + 224 
5 CoreFoundation     0x3752f5c4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 22 
6 CoreFoundation     0x3752f582 __CFRunLoopDoSource1 + 158 
7 CoreFoundation     0x3752182e __CFRunLoopRun + 574 
8 CoreFoundation     0x37521504 CFRunLoopRunSpecific + 220 
9 CoreFoundation     0x37521412 CFRunLoopRunInMode + 54 
10 GraphicsServices    0x33e76d1c GSEventRunModal + 188 
11 UIKit       0x3591d574 -[UIApplication _run] + 580 
12 UIKit       0x3591a550 UIApplicationMain + 964 

END崩溃日志

我已经把范围缩小到在应用程序委托applicationWillResignActive方法的调用,但我可以因为如果应用程序转到后台模式(通过按主页按钮)应用程序正常工作,它只会在收到电话时崩溃。

这导致崩溃在applicationWillResignActive方法该生产线是:

[navController popToRootViewControllerAnimated:NO]; // navController是UINavigationController的一个实例;我使用这个语句来删除所有的视图控制器,当应用程序恢复时,我推第一个视图控制器,以便应用程序从头开始。

有没有人有一个想法,只有当收到电话时才会发生这种崩溃?

+1

你解决了吗? – user370773 2011-05-27 22:15:19

回答

1

我们刚刚追踪到一次非常类似的事故。

我们练得如下所述:

https://github.com/mattgallagher/AudioStreamer/issues/6

尤其MyAudioSessionInterruptionListener(或回调的名称传递给 AudioSessionInitialize)和它的它已经注册后inClientData不能改变,所以回调必须总是做一些明智的事情,即使基础对象已被释放。

为AudioStream建议的解决方案是使用静态变量,并确保它指向当前对回调感兴趣的对象,并且永远不会指向释放对象 - 重要的是不要使用inClientData。

相关问题