Intervalo de atualização segura para startDeviceMotionUpdatesToQueue: withHandler :?

EDIT: adicionado global e agora está funcionando. Mas eu ainda tenho minhas dúvidas .. Por favor, continue lendo :)

Eu quero obter a aceleração exercida no eixo Y sempre que preciso e usá-lo em diferentes partes do meu código. Neste exemplo, estou usando-o dentro de um loop while para fins de teste.

Meu código está funcionando, mas estou usando o método UpdateToQueue ... corretamente ou esse tipo de maneira "heterodoxa" de alcançar o que eu quero?

Eu configurei o intervalo de atualização em 30 ms, você acha que este é um intervalo de atualização "seguro"? Foi-me dito que eu deveria ter cuidado ao escolher um, porque as atualizações atuais ou posteriores de hardware / iOS podem não ser capazes de acompanhar esse intervalo. Isso é verdade?

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