0

重複の可能性:
「if」条件「x」ミリ秒を実行し、「y」ミリ秒停止して、条件を繰り返しますか?

プログラムの実行中にifループ内の条件を継続的にテストするプログラムがあります。しかし、if条件が一定期間(たとえば5ms)trueまたはアクティブになり、次の10msの間if条件を非アクティブ化する必要があります。次に、ユーザーがプログラムを閉じるまで、このパターンを続けます。

4

2 に答える 2

2

あなたは本当に別のアプローチを取るべきだと思われますが、これはあなたの質問に対する文字通りの答えです:

while ( YES )
{
    NSTimeInterval t = [NSDate timeIntervalSince1970];
    long ms = t*1000;
    if ( ms % 15 < 5 )
    {
       // code here is executed for 5 ms in every 15 ms timewindow
    }
}

このループは、アプリのパフォーマンスとバッテリー寿命に非常に悪影響を及ぼします。

「5ミリ秒、15ミリ秒ごと」に実行する必要があるコードの種類に応じて、NSTimer代わりに次を使用できます。

[NSTimer scheduledTimerWithTimeInterval:0.015 target:self
         selector:@selector(fire) userInfo:nil repeats:YES];

メソッドで:

-(void)fire
{
    // called every 15 ms, does something for 5 ms.
}
于 2012-06-01T13:25:03.407 に答える
0

||チェックされているかどうかに関係なく、条件とブールフラグ表示をもう1つ追加します。if(shouldNotCheckCondition || condition)

于 2012-06-01T13:13:18.237 に答える