CMAltitudeData 最后有一些奇怪的数据,有啥想法吗?
Posted
技术标签:
【中文标题】CMAltitudeData 最后有一些奇怪的数据,有啥想法吗?【英文标题】:CMAltitudeData has some weird data at the end, any ideas?CMAltitudeData 最后有一些奇怪的数据,有什么想法吗? 【发布时间】:2017-08-14 08:36:10 【问题描述】:我最近一直在使用 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
我想知道的是最后一部分@ 2381.714421
,它看起来像几秒钟,但实际上我不太确定,当与计时器比较时,与启动时间time_t
相比,该数字开始 +4 秒,之后一段时间不活动它会漂移并变得比启动时间少。
它会因为应用不活动而消失吗? 但是为什么它的启动时间甚至比启动时间还要长呢?
谁能解释这是怎么回事?
【问题讨论】:
【参考方案1】:CMAltitudeData
继承自 CMLogItem
,这是最后一个字段 timestamp
的来源。根据documentation,timestamp
应该与设备启动后的秒数相匹配。
但是,根据关于 SO 的this 问题,启动时间确实会略微漂移,而且似乎timestamp
不是在每次测量时简单地复制time_t
,而是在第一次测量时和之后复制它它只是根据不同的Timer
增加它。与Timer
比较不是一个好主意,因为Timer
在运行循环上运行,所以它仅在您的应用程序处于前台时才有效,即使这样也不是很精确。
【讨论】:
以上是关于CMAltitudeData 最后有一些奇怪的数据,有啥想法吗?的主要内容,如果未能解决你的问题,请参考以下文章