Intervalo seguro de actualización para startDeviceMotionUpdatesToQueue: withHandler :?

EDITAR: añade un global y ahora está funcionando. Pero todavía tengo mis dudas ... Por favor, siga leyendo :)

Quiero obtener la aceleración ejercida en el eje Y siempre que lo necesite y usarla en diferentes partes de mi código. En este ejemplo lo estoy usando dentro de un bucle while para propósitos de prueba ...

Mi código está funcionando pero ¿Estoy usando el método UpdateToQueue ... correctamente o es una forma "poco ortodoxa" de lograr lo que quiero?

He establecido el intervalo de actualización en 30 ms. ¿Crees que este es un intervalo de actualización "seguro"? Me dijeron que debería tener cuidado al elegir uno porque las actualizaciones actuales o posteriores de hardware / iOS podrían no ser capaces de mantenerse al día con ese intervalo, ¿es esto cierto?

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);
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta