Ios 应用程序启动后,SpeakHere录音机崩溃

Ios 应用程序启动后,SpeakHere录音机崩溃,ios,audio-recording,background-foreground,Ios,Audio Recording,Background Foreground,基于苹果公司的SpeakHere音频应用程序示例,我编写了一个用于iPad的小型录音机/播放器。当用户要求显示记录器时,将打开UIView并显示记录/停止按钮和仪表 当我从头开始加载应用程序时,我可以随时录制、停止录制、再次录制。停止录制后,我将应用程序放在后台,例如阅读我的邮件。当再次将录音机置于前台时,无法录制任何声音。我在日志中收到一条错误消息,仪表没有显示任何数据,也没有创建声音文件。我注意到SpeakHere示例应用程序也有同样的行为,无论是在iPhone还是iPad上。唯一的解决方案

基于苹果公司的SpeakHere音频应用程序示例,我编写了一个用于iPad的小型录音机/播放器。当用户要求显示记录器时,将打开UIView并显示记录/停止按钮和仪表

当我从头开始加载应用程序时,我可以随时录制、停止录制、再次录制。停止录制后,我将应用程序放在后台,例如阅读我的邮件。当再次将录音机置于前台时,无法录制任何声音。我在日志中收到一条错误消息,仪表没有显示任何数据,也没有创建声音文件。我注意到SpeakHere示例应用程序也有同样的行为,无论是在iPhone还是iPad上。唯一的解决方案是退出并重新启动应用程序

为了解决这个问题,我决定在用户使用完记录器后释放视图控制器。我为记录视图控制器禁用了ARC,并编写了其dealoc方法。在这个控制器的视图中,我打了一个[self dealloc]电话

但程序崩溃,发送[RecorderViewController childViewControllersCount]:消息发送到解除分配的实例。我想这样的自我释放是不允许的

我需要找到一个解决方案,或者

  • 找到一种在应用程序转到后台时正确管理音频会话的方法(由于录音停止,我不明白为什么会出现这样的问题)

  • 或者,当记录器视图控制器的视图关闭时,正确地解除分配记录器视图控制器,以确保任何时候必须显示该视图时,都会从控制器的XIB文件再次加载该视图

  • [更新]在查看了aurioTouch应用程序的代码(Apple dev网站的另一个音频示例)后,我在我的应用程序代理中找到了以下代码:

    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
        AudioSessionSetActive(true);
    
    }
    

    它可以在我的应用程序或SpeakHere应用程序中使用。。。花了好几个小时找到一个解决办法,这只是一行代码

    是的,太棒了!就这样!我希望苹果能更新他们的示例代码来修复所有的bug。。。