AVAudioSession 的 iOS 错误
Posted
技术标签:
【中文标题】AVAudioSession 的 iOS 错误【英文标题】:iOS error with AVAudioSession 【发布时间】:2012-06-09 11:05:36 【问题描述】:我的用户不断收到此错误,我一直无法在模拟器或我的设备上重现它。我没有实现 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)
【问题讨论】:
【参考方案1】:我们刚刚跟踪了一次非常相似的崩溃。
我们的结果如下所述:
https://github.com/mattgallagher/AudioStreamer/issues/6
特别是 MyAudioSessionInterruptionListener(或传递给 AudioSessionInitialize) 并且它的 inClientData 在注册后无法更改,因此即使底层对象已被释放,回调也必须始终做一些明智的事情。
AudioStream 建议的解决方案是使用静态变量,并确保它指向当前对回调感兴趣的对象,而不是指向已释放的对象 - 重要的是不要使用 inClientData。
【讨论】:
以上是关于AVAudioSession 的 iOS 错误的主要内容,如果未能解决你的问题,请参考以下文章
后台的 MPMoviePlayerController / AVAudioSession 在来电后不会重新开始播放
iOS - 后台的 AVAudioSession 路由更改通知