我目前正在尝试开发一款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的文档没有提及任何内容。
答案 0 :(得分:4)
我认为您的motionManager
已自动释放。添加实例变量或属性以保持运动管理器。
同时检查magnetometerAvailable
是否返回YES,否则您的设备可能不支持磁力计。