我的用户不断收到此错误,我无法在模拟器或设备上重现它。我没有实现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)
答案 0 :(得分:1)
我们刚刚跟踪了一次非常类似的崩溃。
我们的结果如下所述:
https://github.com/mattgallagher/AudioStreamer/issues/6
特别是,MyAudioSessionInterruptionListener(或传递给的回调的名称) AudioSessionInitialize)并且它的inClientData在注册后无法更改,因此即使底层对象已被解除分配,回调也必须始终做一些合理的事情。
为AudioStream建议的解决方案是使用静态变量,并确保它指向当前对回调感兴趣的对象,并且永远不会指向解除分配的对象 - 重要的是不要使用inClientData。