@property (nonomic,retain) CMMotionManager *motionManager; //delcare as a property.
motionManager = [[CMMotionManager alloc] init]; //init it.
motionManager.accelerometerUpdateInterval = 0.2f;
以下はすべてスレッドで実行します(メインスレッドではありません)。
-(void)handle{
[motionManager startAccelerometerUpdates];
while (1) {
CMAcceleration acceleration = motionManager.accelerometerData.acceleration;
NSLog(@"%f %f %f",acceleration.x,acceleration.y,acceleration.z);
sleep(0.5);
}
}
Xcode -> Instruments でアプリを実行すると、アプリがメモリ ウォーミングを受信してシステムによって強制終了されるまで、Living Memory が途切れることなく増加することがわかりました。while ブロックで accelerometerData を解放しようとしています。しかし、効果はありません。motionManager.accelerometerData リリース];
バックグラウンドで実行したいので、startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData,NSError *error) を使用したくありません。このブロックは、アプリが中断されたときに機能しません。
Can anyone help me?
screenshot image:http://img.blog.csdn.net/20130702120140593