【问题标题】:iPhone - App crashing on low memory warning, only after unloading viewcontroller?iPhone - 仅在卸载视图控制器后,应用程序因内存不足警告而崩溃?
【发布时间】:2010-09-27 05:58:04
【问题描述】:

所以,我的应用程序是一组堆叠视图,其中 RootViewController 作为堆栈上的第二个视图。最底部的视图是一个菜单页面,它将根视图控制器或信息视图加载到堆栈上,并且从根视图控制器还有更多视图。

当我收到内存不足警告时,我的应用程序运行良好,除非我尝试从 rootviewcontroller 或信息页面弹出菜单页面。如果我想从 rootviewcontroller 中的任何其他地方转到另一个视图,那么在我尝试通过将 rootviewcontroller 从堆栈中弹出来卸载它之前都可以。如果没有内存警告,rootview 会很好地弹出菜单。但是如果我模拟一个内存不足的警告并尝试弹出视图,那么它就会崩溃。再一次,只有低内存警告和弹出控制器以进入菜单页面时发生崩溃。我不知道发生了什么,我找不到任何内存泄漏,没有任何内容被过度释放。

这是我的第一个应用程序,所以我可能遗漏了一些明显的东西。

【问题讨论】:

    标签: iphone ipad memory crash


    【解决方案1】:

    所以我在菜单页面上注释掉了[super didReceiveMemoryWarning],它正在工作!我猜它每次都在卸载视图。一切正常。无论如何,该页面上没有任何内容可以发布,所以这不应该是一个问题。将此答案放在这里,以供以后可能遇到相同问题的其他人

    【讨论】:

    • “无论如何,该页面上没有要发布的内容,所以它不应该成为问题。”好吧,它也不应该是一个修复。最可能的崩溃来源仍然是两次发布某些内容。你有任何使用 gdb 的线索(回溯、异常等)吗?
    • 菜单页面只有一个按钮可以转到视图控制器。在更深的堆栈中,有一个图像密集型视图有时会减慢并锁定,我假设当时调用了低内存错误,并且所有其他收到内存警告的视图都会卸载它们的视图。因此,当我试图弹出一个不再存在的更高视图时,应用程序会崩溃。我把receivedmemorwarning拿出来,让它不再作用于内存不足来释放视图。
    • +1 这也帮助我解决了我的问题。我觉得这样做不太对劲,感觉就像是解决真正问题的创可贴,以后只需要研究一下......
    猜你喜欢
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多