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 最后有一些奇怪的数据,有啥想法吗?的主要内容,如果未能解决你的问题,请参考以下文章

获取请求中的一些奇怪结果 - 核心数据

滚动 UITableView 的奇怪行为

编辑文字奇怪的行为

很奇怪的问题(Chrome)

测量基数排序时的奇怪结果

phpmyadmin 自动递增主键行为奇怪