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];

ただし、必要なデリゲートメソッドを実装していません(中断1)

デリゲート設定行を削除するか、デリゲートメソッドを実装してクラッシュを解決します

于 2013-02-22T18:26:59.207 に答える