我最近一直在使用Core Motion的框架,当我试图从有限的CMAltitude类中获得更多动力时,在调用结束时遇到了一些奇怪的数据。因此,如果您调用以下命令,请重新创建:
import UIKit
import CoreMotion
class ViewController: UIViewController {
let corey = CMAltimeter()
override func viewDidLoad() {
super.viewDidLoad()
self.getter()
}
@objc func getter() {
corey.startRelativeAltitudeUpdates(to: OperationQueue.main, withHandler: { (altitudeData:CMAltitudeData?, error:Error?) in
print(String(describing: altitudeData.unsafelyUnwrapped))仅仅出于视觉的目的,做这个非常粗糙的事情将会得到这样的响应:
Altitude -0.589237 Pressure 101093.882812 @ 2377.566172
Altitude -0.618303 Pressure 101094.234375 @ 2378.602637
Altitude -0.618303 Pressure 101094.234375 @ 2379.640150
Altitude -0.620945 Pressure 101094.250000 @ 2380.678124
Altitude -0.628872 Pressure 101094.343750 @ 2381.714421我想知道的是最后一个部分,它看起来像秒,但实际上我不是很确定,与计时器相比,boottime time_t的数字开始+4秒,在一段时间不活动后,它会漂移,变成比boottime更短的时间。
它会因为应用程序的不活跃而消失吗?但是为什么它的启动时间甚至比启动时间还要长呢?
有人能解释这是怎么回事吗?
发布于 2017-08-14 17:27:13
CMAltitudeData继承自CMLogItem,这是最后一个字段timestamp的来源。根据documentation的说法,timestamp应该与设备启动后的时间相匹配。
然而,根据this的问题,启动时间确实会稍微漂移,似乎timestamp并不是简单地在每次测量时复制time_t,而是在第一次测量时复制它,然后根据可能不同的Timer递增它。与Timer相比并不是一个好主意,因为Timer运行在一个运行循环上,所以它只在你的应用程序处于前台时才能运行,即使到那时它也不是很精确。
https://stackoverflow.com/questions/45670490
复制相似问题