2010-02-09 79 views
0

我的视图控制器发生了一些奇怪的事情。当发布applicationDidReceiveMemoryWarning时,它会从预计行为的可见视图(第二级视图)以外的堆栈中删除所有视图。但是,如果我然后导航回到根视图,它也有一个返回到自身的后退按钮。从那里的应用程序视图表现非常奇怪的效果,该应用程序是无用的。UIViewController内存警告问题

更奇怪的是完全相同的第二级视图(没有内存泄漏)可以正常工作,没有任何记忆的警告,但有时在应用程序启动导致内存警告,因此导航的问题。该视图保留了以前所有相同的控件和数据,但对于设备来说可能零星地处理太多。这与设备启动时可用的内存有关吗?这似乎只发生在硬件上。

任何想法?

回答

1

我已经找到了问题 - 这是我的代码毕竟。

在应用程序启动我打开我的根视图控制器,然后在我的根视图控制器的viewDidLoad方法我告诉它,如果一个条件适用于加载第二个视图。

当存储器警告发生时,它离开第二视图时,然后再次产生第二视图,同时仍然示出了根查看重现根视图控制器。

这会导致导航进入精神状态。

0

我到目前为止还没有内存问题的专家。但在这种事情之后的奇怪行为表明,消除记忆的过程并不一致。也许有些引用仍然存在,应用程序认为这些引用是有效的引用,但实际上,内存不再分配。内存重新分配也可能导致旧的引用仍然存在,这也可能导致奇怪的行为。

嗯,我不能在这里提供很多建议,只有你可以检查引用未分配区域