【问题标题】:UIViewController Memory Warning issuesUIViewController 内存警告问题
【发布时间】:2011-01-14 17:33:48
【问题描述】:
我的视图控制器发生了一些奇怪的事情。发布 applicationDidReceiveMemoryWarning 时,它会从堆栈中删除所有视图,而不是预期行为的可见视图(第二级视图)。但是,如果我随后导航回根视图,它还有一个返回按钮可以导航回自身。从那里开始,应用程序视图的行为非常奇怪,以至于应用程序毫无用处。
更奇怪的是,完全相同的二级视图(没有内存泄漏)可以在没有任何内存警告的情况下正常工作,但有时在应用启动时会导致内存警告,从而导致导航问题。该视图包含与以前相同的所有控件和数据,但有时可能会导致设备无法处理。这与启动时设备上的可用内存有关吗?这似乎只发生在硬件上。
有什么想法吗?
【问题讨论】:
标签:
iphone
memory
uiviewcontroller
【解决方案1】:
我发现了问题 - 毕竟这是我的代码。
在应用程序启动时,我加载我的根视图控制器,然后在我的根视图控制器的 viewDidLoad 方法中,我告诉它在条件适用时加载第二个视图。
当内存警告发生时,它会在退出第二个视图时重新创建根视图控制器,然后在仍然显示根视图的同时再次创建第二个视图。
这会导致导航进入精神状态。
【解决方案2】:
到目前为止,我还不是记忆问题方面的专家。但是这种事情之后的奇怪行为向我表明,内存的删除并没有持续发生。也许仍然保留了一些引用并且应用程序认为这些是有效的引用,但实际上,不再分配内存。也有可能是内存被重新分配而旧的引用仍然存在,这也可能导致奇怪的行为。
嗯,我在这里不能提供太多建议,只是你可以检查对未分配区域的引用