我有一个 native iOS 应用程序,它通过将 ViewController 推送到根导航 Controller 来创建 View 层次结构。
有时候我发现应用程序突然消失了。它似乎没有崩溃,因为该应用程序仍然存在于 iPad 任务栏中。但似乎一个或多个 View 被卸载,使用户返回主页。该应用程序在 iPad 任务栏中仍然可见,并且可以通过点击任务栏中的图标重新打开。
UIViews 能就这样消失吗?我该如何调试这个?
非常感谢。
最佳答案
It doesn't appear to have crashed, because the App is still present within the iPad task bar.
这确实没有告诉你任何事情。您描述的“任务栏”不是当前正在运行的进程列表;而是当前正在运行的进程的列表。这是最近使用过的应用程序列表。列出的应用程序现在可能正在运行,也可能没有运行。
要判断您的应用程序是否崩溃,请在 Xcode 管理器中选择设备,然后查看设备日志列表。如果您的应用程序崩溃,最新的日志文件将与您的应用程序名称一起列在“进程”列下。选择该日志并查看 - 您可能会看到类似以下内容:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x80938733
Crashed Thread: 0
日志的其余部分将为您提供有关崩溃时每个线程正在执行的操作的一些信息。
也可能发生这样的情况:最新日志并非来自您的应用,而是在“进程”和“类型”列下以未知/未知
形式列出。该日志将仅包含进程列表以及每个进程正在使用的内存页数。在列表中查找您的应用程序,您可能会发现类似以下的行:
MyApplication <23b...9af> 168389 168389 [per-process-limit] (frontmost) (resume)
如果您看到这一点,则说明您的应用没有崩溃;它被操作系统杀死,因为它使用了太多内存。现在是开始使用 Instruments 来分析应用程序的内存使用情况并查找非常大的分配和/或内存泄漏的好时机。
关于ios - UIView突然消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218681/