2

我有一个程序在程序运行期间连续测试 if 循环内的条件。但我希望这个if 条件在一段时间内变为 true 或激活(比如 5 毫秒),然后在接下来的 10 毫秒内停用if 条件。然后继续这个模式直到用户关闭程序。我不知道如何解决这个问题,请帮助我!

4

2 回答 2

0

你可以尝试这样的事情;

布尔结果 = 否;
BOOL prevResult = NO;

而(条件1)
{
    如果(条件2)
        结果=是;
    别的
        结果=否;

    如果(结果)
    {
        if(!prevResult)
            // 存储时间
        else if(/* 当前时间 - 存储时间 < 5ms */)
            // 让线程休眠 10ms
    }

    上一个结果 = 结果;
}

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

于 2012-06-01T06:00:46.390 回答
-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 之间的差异,以秒为单位,精度为亚毫秒。

计算经过的时间,即 timeInterval 并检查其值并比较它是 < 5ms 还是 10 [self yourProcessMethod(TRUE/FALSE)];。

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

于 2012-06-01T06:27:21.927 回答