为啥我没有收到任何加速度计更新?

Posted

技术标签:

【中文标题】为啥我没有收到任何加速度计更新?【英文标题】:Why am I not getting any accelerometer update?为什么我没有收到任何加速度计更新? 【发布时间】:2015-01-13 19:39:50 【问题描述】:

我正在尝试使用 CoreMotion 和 Swift 获取加速度计更新,这是我放置在 viewDidLoad 中的内容:

override func viewDidLoad() 
    super.viewDidLoad()
    let motionManager = CMMotionManager()
    motionManager.accelerometerUpdateInterval = 0.2
    motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()) 
        (info:CMAccelerometerData!,error:NSError!) in
        if error != nil 
            println(error)
        
        else 
            println("OK")
        
    

问题是我的闭包似乎永远不会被调用(我在控制台中没有任何东西),你知道为什么吗?

【问题讨论】:

是的,我知道为什么。谢谢你来玩。 :) @matt 哦,我本来很乐意玩,但我住的地方是晚上 :) 【参考方案1】:

问题在于分配给您的 CMMotionManager 实例的变量 motionManager 被声明为局部变量(在函数 viewDidLoad 的主体中),这意味着当函数完成执行。因此它的寿命约为万分之一秒。

嗯,这还不足以让您的 CMMotionManager 获得很多更新!

【讨论】:

如果您不了解变量的生命周期,您可能想阅读我刚刚编写的 Swift 教程的这一部分:apeth.com/swiftBook/ch03.html#_variable_scope_and_lifetime

以上是关于为啥我没有收到任何加速度计更新?的主要内容,如果未能解决你的问题,请参考以下文章

为啥向数据库字段添加索引会加速对该字段的搜索?

为啥我没有看到通过 Python 中的多处理加速?

FFT 和加速度计数据:为啥我会得到这个输出?

为啥 Windows 8.1 加速计 API 在设备静止时不输出数据?

为啥我腾讯加速器搜不到外服游戏

使用 BLE 从智能手表接收加速度计和陀螺仪信号