1
@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
4

1 に答える 1