Sicheres Aktualisierungsintervall für startDeviceMotionUpdatesToQueue: withHandler :?

BEARBEITEN: ein globales hinzugefügt und jetzt funktioniert es. Aber ich habe immer noch meine Zweifel .. Bitte lesen Sie weiter :)

Ich möchte die Beschleunigung auf der Y-Achse ausüben lassen, wann immer ich sie benötige, und sie in verschiedenen Teilen meines Codes verwenden. In diesem Beispiel verwende ich es in einer while-Schleife zu Testzwecken.

Mein Code funktioniert, aber verwende ich die UpdateToQueue ... -Methode richtig oder ist dies eine "unorthodoxe" Methode, um das zu erreichen, was ich will?

Ich habe das Aktualisierungsintervall auf 30 ms eingestellt. Halten Sie dies für ein "sicheres" Aktualisierungsintervall? Mir wurde gesagt, dass ich bei der Auswahl vorsichtig sein sollte, da aktuelle oder spätere Hardware- / iOS-Updates mit einem solchen Intervall möglicherweise nicht Schritt halten können. Stimmt das?

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage