UIView突然消失了

时间:2013-06-20 16:16:05

标签: ios uiview uiviewcontroller uinavigationcontroller

我有一个原生的iOS应用程序,通过将ViewControllers推送到根导航控制器来创建视图层次结构。

偶尔我发现应用程序突然消失了。它似乎没有崩溃,因为App仍然存在于iPad任务栏中。但似乎一个或多个视图卸载,将用户放回主页。该应用程序仍然可以在iPad任务栏中看到,可以通过点击任务栏中的图标重新打开。

UIViews可以像这样消失吗?我该如何调试呢?

非常感谢。

2 个答案:

答案 0 :(得分:1)

  

它似乎没有崩溃,因为应用程序仍然存在于iPad任务栏中。

那真的不告诉你任何事情。您描述的“任务栏”不是当前正在运行的进程列表;它是最近使用过的应用列表。列出的应用程序现在可能正在运行,也可能没有运行。

要判断您的应用是否崩溃,请在Xcode管理器中选择设备,然后查看设备日志列表。如果您的应用程序崩溃,最新的日志文件将与“处理”列下的应用名称一起列出。选择该日志并查看 - 您可能会看到类似的内容:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x80938733
Crashed Thread:  0

日志的其余部分将为您提供有关崩溃时每个线程正在执行的操作的一些信息。

最新的日志也可能不在您的应用中,而是在“处理和类型”列下列为Unknown/Unknown。该日志将仅包含进程列表和每个进程使用的内存页数。在列表中查找您的应用,您可能会找到如下行:

MyApplication <23b...9af>   168389   168389  [per-process-limit] (frontmost) (resume)

如果你看到了,你的应用程序没有崩溃;它被操作系统杀死,因为它使用了太多内存。现在是开始使用Instruments来分析应用内存使用情况并寻找非常大的分配和/​​或内存泄漏的好时机。

答案 1 :(得分:0)

iOS应用无法隐藏或最小化,因此如果您正在使用您的应用,并且突然您在主屏幕中列出了所有应用,那么您的应用就会崩溃。

如果您使用Xcode安装和测试您的应用程序,您可以转到Organizer-&gt;设备并选择您的设备并检查设备日志以查看应用程序崩溃时发生的情况。

当然,如果应用程序崩溃,控制台/调试区域不会显示任何内容。

如果你没有在你的应用程序中使用ARC,并且当应用程序崩溃时调试区域没有显示任何内容,那么我敢打赌是一个低内存崩溃,那种崩溃通常没有给时间Xcode记录错误,但您可以在设备日志上验证。如果是这样,我建议您在应用中切换并使用ARC。