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 错误的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioSession 无法在 iOS 7 上播放

后台的 MPMoviePlayerController / AVAudioSession 在来电后不会重新开始播放

iOS 音频-AVAudioSession

iOS - 后台的 AVAudioSession 路由更改通知

iOS- 关于AVAudioSession的使用——后台播放音乐

AVAudioSession 学习笔记