什么可以导致UIView被任意地从层次结构中删除?

时间:2009-02-12 01:46:09

标签: cocoa-touch

我有一个iPhone应用程序,对于某些用户来说,有时表现得好像主要的UIView已从视图层次结构中删除。它总是与游戏中的重大事件同时发生。其他核心图形绘制的UIViews在z顺序上方仍然存在,但主要的(OpenGL视图)似乎已经消失,留下背景(纯色)。

应用程序不会崩溃(它会一直运行,没有视图),这似乎对受影响的用户非常一致。不幸的是我无法重现它。

我怀疑内存问题 - 这是最简单的解释 - 但根据我的阅读,看起来像didReceiveMemoryWarning只能释放不可见的视图,除此之外我的应用程序的内存使用量非常小。此外,“重要事件”仅导致OpenGL绘图和SoundEngine调用 - 没有视图操作。

之前有人见过这样的事吗?

4 个答案:

答案 0 :(得分:0)

是的,事实上,我的一个应用程序偶尔会出现这个问题,它似乎与内存有关。

通过调试或分析程序流程,我没有成功跟踪它。我已经确认有问题的视图已被破坏,而不仅仅是以某种方式隐藏。

这种情况很少发生,我没有深入研究,但我确实认为这是由操作系统中某些东西造成的,

答案 1 :(得分:0)

如果与内存相关,您可以在模拟器中轻松测试低内存以调试此问题。

答案 2 :(得分:0)

问题最终是在应用程序的计时器线程中抛出了一个未被捕获的NSException(来自第三方库),它杀死了计时器线程,但没有杀死应用程序的其余部分。好消息是,在这种情况下会生成崩溃报告,如果您知道要查找/请求它们,可以更容易地跟踪它。

答案 3 :(得分:-1)

正如SDK文档中所明确的那样,当您的应用程序内存不足时,可以收集未使用的视图。当它再次需要时,它会被重新创建。这是为了节省宝贵的iPhone资源。最好的办法是保留视图,使其无法释放。