簡體   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