如何使用Xcode的主线程检查器?

问题描述 投票:0回答:1

如何使用 Xcode 检测代码库中 UI 更新的所有区域。 我希望它会导致应用程序变得无响应

我想启用这些紫色警告 “不应在主线程上调用此方法,因为它可能会导致用户界面无响应。”

我已经在“编辑方案”->“运行”->“诊断”->“运行时 API 检查”中启用了

Main Thread Checker
,但我没有收到这些警告,如所附图片所示

enter image description here

enter image description here

xcode swiftui
1个回答
1
投票

用户界面无响应的原因有很多。问题中显示的 Xcode 诊断选项并不是我们拥有的唯一资源:

我建议您考虑使用 Instruments 的“Time Profiler”模板,其中包括“Hangs”工具。请参阅 WWDC 2023 的视频使用 Instruments 分析挂起、2022 年的使用 Xcode 和设备上检测来追踪挂起以及 2021 的视频了解并消除应用中的挂起


例如,我故意通过在主线程上使用压缩框架压缩和解压缩大型资产来表现出挂起。 (我为体现挂起所做的事情并不是很相关。这只是一个例子。)

Xcode 诊断没有识别出问题,但是当我在 Instruments 中对其进行分析时,“Hangs”工具将其识别为“microhang”。然后我control单击挂起的“间隔”并从上下文菜单中选择“设置检查范围”。将分析范围缩小到挂起发生的时间后,我跳到“Time Profiler”工具,看看应用程序挂起时正在做什么:

enter image description here

我什至可以双击堆栈跟踪中的符号,Instruments 会将我带到有问题的代码:

enter image description here

顺便说一句,我有时发现仪器中的“记录等待线程”全局记录选项在这些情况下也很有帮助。它确保我们即使在一个线程正在等待另一个线程时也能捕获性能样本:

enter image description here

最重要的是,我建议观看其中一些视频,您将更好地了解可能影响应用程序响应能力的各种问题,以及如何使用这些工具来识别和诊断问题。

© www.soinside.com 2019 - 2024. All rights reserved.