CMMotionManager不提供任何值

时间:2013-12-04 23:32:06

标签: ios core-motion motion-detection magnetometer cmmotionmanager

我目前正在尝试开发一款iOS应用程序,用于从CMMotionManager中提取磁力计数据。我创建了一个非常简单的测试应用程序,但即使该应用程序也无法在我的iPhone 5上运行。代码如下:

- (void)viewDidLoad
{
    [super viewDidLoad];

    CMMotionManager *motionManager = [[CMMotionManager alloc] init];

    [motionManager setMagnetometerUpdateInterval:1.0/30.0f];
    [motionManager  startMagnetometerUpdatesToQueue:[[NSOperationQueue alloc] init]
                    withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {
        NSLog(@"eek");
    }];
}

问题是从不调用处理程序。同样,调用[motionManager startMagnetometerUpdates]然后轮询magnetometerData不起作用(返回nil)。执行[motionManager isMagnetometerActive]时,结果始终为false

我被困在这里,有什么想法吗?我不明白为什么代码不应该工作。我是否必须先以任何方式请求访问指南针?除了我所做的事情之外,CMMotionManager的文档没有提及任何内容。

1 个答案:

答案 0 :(得分:4)

我认为您的motionManager已自动释放。添加实例变量或属性以保持运动管理器。

同时检查magnetometerAvailable是否返回YES,否则您的设备可能不支持磁力计。