繁体   English   中英

CoreMotion主线程检查器警告,仅出现在2018型号iPhone上

[英]Main Thread Checker warning with CoreMotion, only appearing on 2018 model iPhones

以下是该问题的极简化版本:

import UIKit
import CoreMotion

class ViewController: UIViewController {
    private let manager = CMMotionManager()
    private let interval = 0.01

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        startUpdates()
    }

    private func startUpdates() {
        let queue = OperationQueue()
        queue.name = "com.demo.motion"
        queue.qualityOfService = .userInteractive
        queue.maxConcurrentOperationCount = 1
        manager.accelerometerUpdateInterval = interval
        manager.startAccelerometerUpdates(to: queue) { _, _ in }
    }
}

当我在iPhone XR上运行时,我会收到以下信息:

主线程检查器:在后台线程上调用的UI API: - [UIApplication applicationState] PID:1237,TID:147763,线程名称:com.apple.CoreMotion.MotionThread,队列名称:com.apple.root.default-qos.overcommit ,QoS:0

  • 我的设备运行12.3 ,这是目前最新的iOS版本
  • 在各种iPad(2018年前),iPhone 8,iPhone 6S和其他旧型号上运行此问题,不会出现此问题。
  • 更改qualityOfService对此没有影响(我的偏好是使用utility
  • 出于好奇,我将整个startUpdates()函数包装在主调度中,但没有成功

基于队列名称,当发生这种情况时,我的假设是,这是内部的东西,只是通过XR中较快的处理器而不是旧设备暴露出来。

这是一个已知的问题,已经向苹果公司报告了雷达

希望它很快就会得到解决,但我没有在SO上看到它的任何条目,并希望为其他人提供一些可用的东西。

如果可以的话,请提出申请。

幸运的是,我还没有见过这样的任何不利影响

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM