iPhone Xs中出现“主线程检查器:在后台线程上调用UI API”错误,在Simulator中工作正常

时间:2019-07-16 20:28:05

标签: swift multithreading ios-simulator iphone-xs

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

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

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

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

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

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

我尝试了以下信息的答案:Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState],以获取代码行,并在出现问题时暂停:

enter image description here

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

enter image description here

堆栈跟踪信息没有用。我可以查看的唯一代码是Realm Listener(我也将其禁用)

enter image description here

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

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

最后,在使用其他队列以及管理UI的情况下,由于Realm的限制,我在项目的多个区域中使用了“ DispatchQueue.main.async {}”。

任何帮助将不胜感激

0 个答案:

没有答案