我开始使用 DeviceMotion 类进行编码。遵循Apple的文档后,我有以下内容:
- (void)viewDidLoad {
[super viewDidLoad];
myMM = [[CMMotionManager alloc] init];
myMM.deviceMotionUpdateInterval = 1.0/30.0;
theQ = [[NSOperationQueue currentQueue] retain];
motionHandler = ^ (CMDeviceMotion *motionData, NSError *error) {
if (motionData.rotationRate.z > 5.5 || motionData.rotationRate.z < -5.5) {
NSLog(@"Rotation of Z."); // Reference A
}
};
-(IBAction)toggleClick{
NSLog(@"toggle");
if(myMM.gyroAvailable){
if(myMM.deviceMotionActive){
NSLog(@"Stopping Motion Updates..");
[myMM stopDeviceMotionUpdates];
} else {
NSLog(@"Starting Motion Updates..");
[myMM startDeviceMotionUpdatesToQueue:theQ withHandler:motionHandler];
}
}
else {
NSLog(@"No motion available. Quit!");
}
这段代码工作正常,但是当我想要执行除 NSLog 之外的任何代码(甚至像递增整数这样简单的代码)来代替“引用 A”时,我会在控制台中得到一个 EXEC Bad Access。
我环顾四周,我发现它只是某种内存泄漏。有谁知道发生了什么事?如果没有,我该如何弄清楚?我对仪器非常缺乏经验,但如果我指出正确的方向,我将不胜感激。