Interwał bezpiecznej aktualizacji dla startDeviceMotionUpdatesToQueue: withHandler :?

EDIT: dodano globalny i teraz działa. Ale wciąż mam swoje wątpliwości. Przeczytaj dalej :)

Chcę uzyskać przyspieszenie na osi Y, kiedy tylko będę potrzebować i używać go w różnych częściach mojego kodu. W tym przykładzie używam go w pętli while do celów testowych.

Mój kod działa, ale Am I używa poprawnie metody UpdateToQueue ... czy ten rodzaj „nieortodoksyjnego” sposobu na osiągnięcie tego, czego chcę?

Ustawiłem interwał aktualizacji na 30 ms, czy uważasz, że jest to „bezpieczny” interwał aktualizacji? Powiedziano mi, że powinienem być ostrożny przy wyborze jednego, ponieważ aktualne lub późniejsze aktualizacje sprzętu / iOS mogą nie być w stanie nadążyć za takim odstępem, czy to prawda?

double myAcceleration; // a global..

-(void) play // my "main" method..
{
    CMMotionManager *motionManager = [[CMMotionManager alloc] init];
    motionManager.deviceMotionUpdateInterval = 0.03; // update every 30ms
    [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue]  
                                       withHandler:^(CMDeviceMotion *motion, NSError *error) 
                                       {
                                           myAcceleration = motion.userAcceleration.y;
                                       }
    ];

    while(!self.stopButtonPressed)
    {
        NSLog(@"Y-Axis acceleration is %f", myAcceleration);
    }
}

questionAnswers(2)

yourAnswerToTheQuestion