Cocoa touch 什么会导致UIView从层次结构中任意删除?

Cocoa touch 什么会导致UIView从层次结构中任意删除?,cocoa-touch,Cocoa Touch,我有一个iPhone应用程序,对于一些用户来说,它有时的行为就像主UIView已从视图层次结构中删除一样。它总是与比赛中的重大事件同时发生。其他以z顺序在其上方绘制的核心图形视图仍然保留,但主视图(OpenGL视图)似乎已消失,留下了背景(纯色) 应用程序不会崩溃(它一直在运行,没有视图),对于受影响的用户来说,这种情况似乎持续发生。不幸的是,我无法复制它 我怀疑内存问题——这可能是最简单的解释——但根据我的阅读,看起来didReceiveMemoryWarning仅处理不可见的deallocs

我有一个iPhone应用程序,对于一些用户来说,它有时的行为就像主UIView已从视图层次结构中删除一样。它总是与比赛中的重大事件同时发生。其他以z顺序在其上方绘制的核心图形视图仍然保留,但主视图(OpenGL视图)似乎已消失,留下了背景(纯色)

应用程序不会崩溃(它一直在运行,没有视图),对于受影响的用户来说,这种情况似乎持续发生。不幸的是,我无法复制它

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


以前有人看到过类似的情况吗?

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

我没有成功地通过调试或分析程序流来跟踪它。我已经证实,所讨论的观点被破坏了,而不仅仅是以某种方式隐藏起来


这种情况很少发生,我还没有深入研究过,但我确实认为它是由操作系统中的某些方面引起的,

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

如果这个问题与内存有关,你可以在模拟器中轻松测试内存不足,以调试这个问题。

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

如果相关视图可见,则很有可能在8月份“正在使用”——感谢您的帮助,但请仔细阅读我的问题。正如安德鲁指出的,这个观点正在使用中;不幸的是,它并没有重现这个问题(或者似乎对应用程序有任何影响)。模拟器所做的只是调用类上的低内存方法。它不会模拟运行资源不足的操作系统。可悲的是,它被称为模拟器而不是eumlator有很多原因;它也可能对你的应用程序有所帮助。