0

我正在使用 Swift 5 在 MacOS 10.15 Catalina Beta (19A50501i) 上使用 Xcode 10.2.1(最后一个稳定版本)。iPhone Xs 具有 iOS 12.3.1

我检查了多个与“在后台线程上调用 UI API”相关的问题,但似乎都没有解决我的问题。

我有一个复杂的应用程序,我已经工作了 8 个多月,并且有多个 AppStore 更新。我最近将我的设备从 iPhone 8 迁移到 iPhone Xs,现在我在初始获取时收到此错误消息。我无法查明导致问题的代码。

  • 从 Xcode 编译到 iPhone 8 ---- 一切正常
  • 在iPhone Xs模拟器中编译----OK
  • 从 TestFlight 安装到我的设备 (iPhone Xs) ---- OK。(这个问题以前从未浮出水面,因为我所有使用 iPhone Xs 的测试人员都通过 TestFlight 获取了该应用程序)。

仅当从 Xcode 编译到 iPhone Xs 或 iPhone XR 时,它会报告“主线程检查器:在后台线程上调用 UI API”消息,然后在 5 秒延迟(阻塞 UI)后,一切都照常进行。

初始获取中唯一的 UI 代码与显示 HUD 相关。我以相同的结果禁用了它

我尝试了这篇文章的答案:Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState]尝试获取代码行,暂停问题:

在此处输入图像描述

但是,它在汇编程序调用的 ret 行中暂停

在此处输入图像描述

堆栈跟踪信息没有用。我可以查看的唯一代码是领域侦听器(我也禁用了)

在此处输入图像描述

除了 UIScreen 扩展中用于检查屏幕绝对高度的类方法和一些与 iPhone X(或更新版本)安全区域相关的约束之外,没有其他 iPhone Xs 特定代码。

另外,我没有使用任何 CoreMotion 代码。

最后,我在项目的多个区域使用“DispatchQueue.main.async {}”,因为在使用其他队列时 Realm 的限制以及管理 UI。

任何帮助将不胜感激

4

0 回答 0