Ios5 在后台和前台之间切换应用程序后,MPMoviePlayerViewController崩溃

Ios5 在后台和前台之间切换应用程序后,MPMoviePlayerViewController崩溃,ios5,mpmovieplayercontroller,Ios5,Mpmovieplayercontroller,我的情况: 我正在用AVAudioRecorder录制音频文件。 要播放该唱片,我正在使用MPMoviePlayerViewController。 录音、播放、停止等工作正常 我的问题是: 播放后:当我按下home按钮(将我的应用程序置于后台)并再次打开我的应用程序时,应用程序崩溃。 仅当播放完成时才会发生(按“完成”或播放到结束)。当我在播放过程中按下home(主页)按钮并再次打开应用程序时,一切都很好 这里是我的电影播放器代码:(使用中的代码) 我正在使用iOS5和ARC 带有代码的类是一个

我的情况: 我正在用AVAudioRecorder录制音频文件。 要播放该唱片,我正在使用MPMoviePlayerViewController。 录音、播放、停止等工作正常

我的问题是: 播放后:当我按下home按钮(将我的应用程序置于后台)并再次打开我的应用程序时,应用程序崩溃。 仅当播放完成时才会发生(按“完成”或播放到结束)。当我在播放过程中按下home(主页)按钮并再次打开应用程序时,一切都很好

这里是我的电影播放器代码:(使用中的代码)

我正在使用iOS5和ARC

带有代码的类是一个普通的UIViewController,也是该方法的调用方

它只发生在设备上。模拟器没有崩溃,但在我的iPhone4和iPad1上

我找不到我的应用程序崩溃的原因

编辑: 我不太确定,但我想我解决了我的车祸

我相信问题不在于播放音频文件,或者不仅仅是。录音似乎也是这个问题的一部分

在我的AVAudioRecorder录音课程中,我注册了这个课程作为AVAudioSession的代表: [[AVAudioSession sharedInstance]setDelegate:self]

我把它移到了我的“根”类(我的“主”类,从这里我开始一切)中,当我实现协议方法“beginInterruption”和“endInterruption”(仅通过NSLog语句知道)时,我可以看到在后台设置应用程序时调用“beginInterruption”,在再次启动应用程序时调用“endInterruption”(前台)。 在stacktrace中,您可以看到类似“AudioSessionInterruptionListener”的内容……似乎是委托方法的一部分

编辑2


我测试了我的应用程序几次,崩溃再也没有发生过。将AVAudioSessionDelegate设置为我的“root”类似乎就是答案。

对于我来说,有必要注册
AVAudioSession
委托:

[[AVAudioSession sharedInstance] setDelegate: self];
我在我的录音处理类的“家长”类中添加了此选项。
我还必须实现AVAudioSession委托的
beginInterruption
endInterruption

此后,坠机事件再也没有发生过

[[AVAudioSession sharedInstance] setDelegate: self];