ios - 应用程序因 AVAudioSession privateBeginInterruption 而崩溃

标签 ios xcode avaudioplayer avaudiosession

我正在设备(音板)上测试我的应用程序,它因 EXC_BAD_ACCESS 而崩溃,我使用了断点,错误来自 [AVAudioSession privateBeginInterruption]

崩溃按照以下模式发生:

  1. 应用启动,我们看到主菜单
  2. 按下主菜单按钮并加载音板 View (按下),按下此处的一些按钮并播放声音。
  3. 返回主菜单 ([self.navigationController popViewControllerAnimated:YES];)
  4. 应用进入后台
  5. 当应用进入前台并按下音板的菜单按钮时,应用会崩溃。

我不知道这里发生了什么,我安装了 CrashLytics,它只说:

app crash

也许 Audio Session 已从内存中释放,应用程序尝试访问它但失败了?

Audio Session 在 viewDidLoad 中初始化

//  Initialize audio session
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: nil];

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof    (audioRouteOverride),&audioRouteOverride);  

viewDidUnload 我有

[[AVAudioSession sharedInstance] setDelegate: nil];

有什么提示吗?

谢谢!

最佳答案

发生崩溃是因为您在这一行中将 session 委托(delegate)设置为您的 Controller

[[AVAudioSession sharedInstance] setDelegate: self];

但是没有实现需要的委托(delegate)方法(中断一)

要么去掉delegate设置行,要么实现delegate方法解决crash

关于ios - 应用程序因 AVAudioSession privateBeginInterruption 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15015300/

相关文章:

ios - UIAccessibilityAnnouncementNotification 异步问题

objective-c - 来自 ASIHttpRequest 的空白响应

ios - 尝试从后台恢复时触发 AVAudioSessionInterruptionNotification 和 AVAudioSessionInterruptionWasSuspendedKey

ios - EZAudio CocoaPods 模块导入错误

ios - 如何在同一台机器上安装 iOS4 和 5 SDK?

ios - xcode 中目标的物理位置

ios - 如何为 nib 文件中包含的 UILabel 定义 ViewDidLoad 方法?

html - 绕过跨域限制 ajax - jquery 和/或 iOS

iphone - 添加声音到 Xcode 4.3

ios - 如何使用 AvAudioPlayer 实现 MPNowPlayingInfoCenter