执行“if”条件“x”毫秒并停止“y”毫秒并重复该条件?

时间:2012-06-01 05:45:21

标签: iphone objective-c ios

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

2 个答案:

答案 0 :(得分:0)

你可以试试这样的事情;

BOOL result = NO;
BOOL prevResult = NO;

while(condition1)
{
    if(condition2)
        result = YES;
    else
        result = NO;

    if(result)
    {
        if(!prevResult)
            // Store the time
        else if(/* current time - stored time < 5ms */)
            // Make the thread sleep for 10ms
    }

    prevResult = result;
}

请注意,期望毫秒精度可能不太现实。

答案 1 :(得分:-1)

我有一个建议给你......

如果要以TRUE值启动进程,请创建一个方法并调用此方法。

-(void)yourProcessMethod(BOOL _flag){

  if(_flag){
      //Execute your process 
      //now check for time is it 5ms or not
      if(time elapsed < 5ms){
          [self yourProcessMethod(TRUE)];
      }else{
          [self yourProcessMethod(FALSE)];
      }
  }else{
      //Execute your process (or do nothing if you want to stop it for 10 ms)
      //now check for time is it 10ms or not
      if(time elapsed < 10ms){
          [self yourProcessMethod(FALSE)];
      }else{
          [self yourProcessMethod(TRUE)];
      }

  }
}

已编辑: -

您可以使用这段代码检查执行时间。

NSDate *start = [NSDate date];
// do stuff...
NSTimeInterval timeInterval = [start timeIntervalSinceNow];

timeInterval是start和now之间的差异,以秒为单位,精确度为亚毫秒级。

计算时间Elapsed,即timeInterval并检查其值并比较它是否&lt; 5ms或10 [self yourProcessMethod(TRUE / FALSE)];。

我希望这会帮助你。 :)如果是,您可以接受答案或UpVote it:)