0

私は定期的にRCヘリコプターにデータを送信しています。現在、これを行うために30ミリ秒の時間間隔でNSTimerを使用しています。NSTimerの不正確さとiosの非リアルタイム性のために、サンプル時間との間にかなり大きな不一致が生じています。(最初の30ミリ秒で5パケットのデータがあり、その後4サイクルの間は何もありません)。iOSでデータのサンプリングと関数のタイミングを処理するためのより正確な方法はありますか?

4

1 に答える 1

1

ゲームで通常行うように、fpsを微調整することができます(また、ロジックとペイントを分離して、どのfpsでも正常に機能するようにします)。このようなもので、バックグラウンドスレッドで呼び出します。

- (void)updateLoop
{
    NSTimeInterval last = CFAbsoluteTimeGetCurrent();
    NSTimeInterval elapsed = 0;
    while (self.running) {
        NSTimeInterval now = CFAbsoluteTimeGetCurrent();
        NSTimeInterval dt = now - last;

        elapsed += dt;

        if (elapsed >= YOUR_INTERVAL) {
            //Do stuff
            elapsed = 0;
        }

        last = now;

        [NSThread sleepForTimeInterval:0.001]; //There is not NSThread yield
    }
}
于 2013-01-03T17:47:03.830 に答える