CMAltitudeData最后有一些奇怪的数据,有什么想法吗?

时间:2017-08-14 08:36:11

标签: ios swift xcode core-motion

我最近一直在玩Core Motion的框架,并且在尝试从有限的CMAltitude类中获得更多果汁时,在调用结束时偶然发现了一些奇怪的数据。所以如果你打电话要重新创建:

@echo off
set datetoday=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
set /a batchdate=%datetoday%-1
cd c:\batchreports\DAYENDREPORTS\PREDAYEND\%batchdate%

ftp 192.168.18.188
username
password
cd autoemail
send DEALS_ENTERED_TODAY_ALL_2OM_UP_20170813.xls
bye
exit

只是为了视觉目的这样做真的很沙哑的事情会回应:

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这个数字开始+ 4秒后,在一段时间不活动后,它会漂移,并且比启动时间变得更少。

由于应用程序不活动,它会消失吗? 但是,为什么它比启动时更多的时间开始呢?

有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:0)

CMAltitudeData继承自CMLogItem,这是最后一个字段timestamp来自的地方。根据{{​​3}},timestamp应该与设备启动后的秒数匹配。

然而,根据documentation关于SO的问题,启动时间确实会略微漂移,似乎timestamp并不是简单地在每次测量时复制time_t,而是在第一次测量时复制它,之后它可能会根据不同的Timer增加它。与Timer相比并不是一个好主意,因为Timer在runloop上运行,因此只有当您的应用处于前台时它才有效,即使这样它也不是非常精确。