[英]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
qualityOfService
对此没有影响(我的偏好是使用utility
) startUpdates()
函数包装在主调度中,但没有成功 基于队列名称,当发生这种情况时,我的假设是,这是内部的东西,只是通过XR中较快的处理器而不是旧设备暴露出来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.