[英]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.