CoreMotion 显然是从后台线程调用 UI API

Posted

技术标签:

【中文标题】CoreMotion 显然是从后台线程调用 UI API【英文标题】:CoreMotion apparently calls UI API from background thread 【发布时间】:2018-11-20 17:35:57 【问题描述】:

在我的应用程序的某个时刻,我正在初始化一个 CMMotionManager。这发生在主线程上。这样做之后,Xcode 10 主线程检查器会指示

-[UIApplication applicationState] 

没有从主线程调用。确实是来自

Thread name: com.apple.CoreMotion.MotionThread

由于这是 Apple 的私有框架,在我看来,我只需要等到 Apple 方面解决此问题即可。我是否正确和/或有什么方法可以在不关闭主线程检查器的情况下解决此问题?

【问题讨论】:

【参考方案1】:

它目前是 API 中的一个错误,正在后台线程中触发。

我可以阻止它

lazy var motionManager = CMMotionManager()

另见https://github.com/JonasGessner/JGProgressHUD/issues/98,但目前没有解决方案。

【讨论】:

惰性调用只会推迟异常。

以上是关于CoreMotion 显然是从后台线程调用 UI API的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WatchKit 中使用 CoreMotion?

主线程检查器:在后台线程上调用的 UI API:-[UIApplication applicationState]

iOS:主线程检查器:在后台线程上调用的 UI API:-[UIView retainCount]

主线程检查器:在后台线程上调用 UI API iOS 11 Xcode 9 GM Seed

从非 UI 线程调用 Snackbar.make() 是如何工作的?

在 SceneKit 中使用 GIFU 库播放 GIF 会导致应用程序 UI 冻结任何解决方案? UIView Animated 从后台线程调用