我最近一直在玩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秒后,在一段时间不活动后,它会漂移,并且比启动时间变得更少。
由于应用程序不活动,它会消失吗? 但是,为什么它比启动时更多的时间开始呢?
有人可以解释发生了什么吗?
答案 0 :(得分:0)
CMAltitudeData
继承自CMLogItem
,这是最后一个字段timestamp
来自的地方。根据{{3}},timestamp
应该与设备启动后的秒数匹配。
然而,根据documentation关于SO的问题,启动时间确实会略微漂移,似乎timestamp
并不是简单地在每次测量时复制time_t
,而是在第一次测量时复制它,之后它可能会根据不同的Timer
增加它。与Timer
相比并不是一个好主意,因为Timer
在runloop上运行,因此只有当您的应用处于前台时它才有效,即使这样它也不是非常精确。