在一段时间内执行“if”条件,然后再停止一段时间再重复一次?

时间:2012-06-01 13:09:41

标签: objective-c ios xcode

  

可能重复:
  Execute an “if” condition “x” milliseconds and stop for “y”millisecond and repeat the condition ?

我有一个程序在程序运行期间连续测试if循环内的条件。但是我希望这个条件在某段时间内变为真或有效(比如说5ms),然后在接下来的10ms内停用if条件。然后继续这种模式,直到用户关闭程序!

2 个答案:

答案 0 :(得分: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 ms,每15 ms”,您可以使用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.
}

答案 1 :(得分:0)

使用||再添加一个条件,并检查是否有bool标志指示。 if(shouldNotCheckCondition || condition)