1

我的用户不断收到此错误,我无法在模拟器或我的设备上重现它。我没有实现 AVAudioSessionDelegate (可能命名不同),我总是使用应用程序默认的 AVAudioSession,从不创建一个新的。

关于可能导致它的任何建议?

0   libobjc.A.dylib 0x31ca5fbc objc_msgSend + 15
1   AudioToolbox 0x3677ff27 _ZN29AudioSessionPropertyListeners24CallPropertyListenersImpEmmPKv + 274
2   AudioToolbox 0x36780205 _ZN29AudioSessionPropertyListeners21CallPropertyListenersEmmPKv + 240
3   AudioToolbox 0x3677de81 SSServer_AudioSessionInterruptionListenerMessage + 56
4   AudioToolbox 0x36726483 _XAudioSessionInterruptionListenerMessage + 62
5   AudioToolbox 0x366bb373 mshMIGPerform + 374
6   CoreFoundation 0x38199553 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 38
7   CoreFoundation 0x381994f5 __CFRunLoopDoSource1 + 140
8   CoreFoundation 0x38198343 __CFRunLoopRun + 1370
9   CoreFoundation 0x3811b4dd CFRunLoopRunSpecific + 300
10  CoreFoundation 0x3811b3a5 CFRunLoopRunInMode + 104
11  GraphicsServices 0x37c99fcd GSEventRunModal + 156
12  UIKit 0x355ab743 UIApplicationMain + 1090
13  Accentuate! 0x395f main (main.m:14)
4

1 回答 1

1

我们刚刚跟踪了一次非常相似的崩溃。

我们的结果如下所述:

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

特别是 MyAudioSessionInterruptionListener(或传递给 AudioSessionInitialize 的回调的名称)及其 inClientData 在注册后无法更改,因此即使底层对象已被释放,回调也必须始终做一些明智的事情。

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

于 2012-12-04T17:23:14.510 回答