3

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

崩溃按照以下模式发生:

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

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

应用程序崩溃

也许音频会话从内存中释放并且应用程序尝试访问它并失败?

音频会话在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];

有什么提示吗?

谢谢!

4

1 回答 1

6

发生崩溃是因为您已在此行中将会话委托设置为您的控制器

[[AVAudioSession sharedInstance] setDelegate: self];

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

删除委托设置行或实现委托方法以解决崩溃

于 2013-02-22T18:26:59.207 回答