您问题的评论线程表明终止是由于后台 CPU 使用率过高。
根据您的最后评论,听起来您不知道从哪里开始使用 Instruments(我去过那里),正如另一位评论者推荐的那样,所以我将提供一些有关如何开始在仪器中进行 CPU 分析的基本信息,然后您可以在线查找更详细的教程(这个来自 Apple 的 WWDC 视频是一个很好的起点:https ://developer.apple.com/videos/play/wwdc2019/411/#:~:text= Instruments%20is%20a%20powerful%20performance,optimize%20their%20behavior%20and%20performance )
以下假设使用 Xcode 12.1 及其对应的 Instruments 版本 12.1,但最近的版本应该非常相似(可能在旧版本中按钮的位置略有不同等):
- 在 Xcode 中打开您的应用程序项目,并在真实设备上运行它(模拟器将为您提供有关您的 Mac 的 CPU 使用情况的信息,并且与真实设备有很大不同)。
- 转到左侧边栏中的调试导航器 (Cmd+7),在边栏中选择 CPU,然后单击右上角的
Profile in Instruments
按钮。
- 如果询问,请选择“配置当前会话”。
- 仪器应自动启动并开始录制。
- 在您的设备上重现问题。
现在要了解 Instruments 中显示的内容:
- 顶部窗格(移动图表)显示一段时间内的 CPU 使用率。
- 底部窗格显示已运行进程的调用树。
那里有很多信息,所以您想查看Filter and configuration bar
窗口最底部的 ,并首先选择 Call Tree 菜单中的所有选项。它看起来像这样:
以下是每个选项的简短说明:
- 按线程分离:按线程显示进程以帮助诊断过度工作的线程
- 反转调用树:反转堆栈以首先显示底部部分,这可能对故障排除更有用
- 隐藏系统库:删除系统库进程,从而减少噪音,您可以只关注应用程序的代码
- Flatten Recursion:将递归调用合并到一个条目中
- 顶级函数:结合被调用函数使用的时间,加上从该函数调用的函数所花费的时间。这可以帮助您找到在 CPU 使用率方面最昂贵的方法。
现在,您已经获得了仅适用于您的应用程序的昂贵 CPU 方法的过滤列表,并且选择一行可以在调用树视图右侧的扩展详细信息窗格中为您提供更多信息。这可以准确地向您显示您的代码文件在哪个方法中运行,甚至可以在 Xcode 中将您带到它(只需单击几下按钮)。
希望这足以让您开始,识别代码中可能导致您的应用程序终止的一些潜在问题区域。