1

我在运行 iOS5.0 的 iPhone3GS 上的一些代码遇到了问题

以下块永远不会被执行,即使它在 iOS5.0 的 iPhone4 上被调用得很好。

日志语句永远不会出现,断点永远不会被触发。我查了一下,运动管理器和队列都不为空。

  [motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {

            NSLog(@"motion event received");

//...
}];

我是否遗漏了什么,或者我需要重新编写代码才能在没有阻塞队列的情况下工作?
感谢您对我们的任何意见!

更新:

我检查了这个方法,它有效:

   [motionManager startAccelerometerUpdatesToQueue:motionQueue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
        NSLog(@"accelerometerData event received");
    }];
4

1 回答 1

3

这与阻塞队列无关。我相信你的问题是设备运动事件需要加速度计和陀螺仪(可以用 查询-deviceMotionAvailable),但 iPhone 3GS 没有陀螺仪。因此,即使是非基于块的设备运动方法也不适合您。您应该考虑仅使用加速度计是否足以满足您的需求;否则你将不得不限制你的应用程序需要陀螺仪。

于 2012-02-17T04:06:43.703 回答