Iphone 执行一个“命令”;如果;条件“;x";毫秒,并停止“秒”;“是”;毫秒,然后重复这个条件?

Iphone 执行一个“命令”;如果;条件“;x";毫秒,并停止“秒”;“是”;毫秒,然后重复这个条件?,iphone,objective-c,ios,Iphone,Objective C,Ios,我有一个程序,在程序运行期间连续测试if循环内的条件。但是我希望这个if条件在一定时间内变为true或active(比如5ms),然后在接下来的10ms内停用if条件。然后继续此模式,直到用户关闭程序。我不知道该怎么做,请帮帮我 你可以试试这样的东西 BOOL result = NO; BOOL prevResult = NO; while(condition1) { if(condition2) result = YES; else resul

我有一个程序,在程序运行期间连续测试if循环内的条件。但是我希望这个if条件在一定时间内变为true或active(比如5ms),然后在接下来的10ms内停用if条件。然后继续此模式,直到用户关闭程序。我不知道该怎么做,请帮帮我

你可以试试这样的东西

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; } BOOL结果=否; BOOL prevResult=否; while(条件1) { 如果(条件2) 结果=是; 其他的 结果=否; 如果(结果) { 如果(!prevResult) //存储时间 否则如果(/*当前时间-存储时间<5ms*/) //使线程休眠10毫秒 } 结果=结果; }
请注意,期望毫秒精度可能不太现实。

您可以尝试这样的方法

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; } BOOL结果=否; BOOL prevResult=否; while(条件1) { 如果(条件2) 结果=是; 其他的 结果=否; 如果(结果) { 如果(!prevResult) //存储时间 否则如果(/*当前时间-存储时间<5ms*/) //使线程休眠10毫秒 } 结果=结果; }
请注意,期望毫秒精度可能不太现实。

我有一个建议给你

创建一个方法,并在希望以真值启动进程时调用此方法

-(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)];
      }

  }
}
timeInterval
是开始和现在之间的差值,以秒为单位,精度为亚毫秒

计算经过的时间,即时间间隔,检查其值,并比较它是<5ms还是10[self yourProcessMethod(真/假)]


我希望这对您有所帮助。:)如果是,您可以接受答案或投票:)

我有一个建议给您

创建一个方法,并在希望以真值启动进程时调用此方法

-(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)];
      }

  }
}
timeInterval
是开始和现在之间的差值,以秒为单位,精度为亚毫秒

计算经过的时间,即时间间隔,检查其值,并比较它是<5ms还是10[self yourProcessMethod(真/假)]


我希望这对您有所帮助。:)如果是,您可以接受答案或投票:)

您可以提及条件1吗?我想,您所指的条件2是我需要签入代码的条件。你能告诉我如何使线程休眠10毫秒吗?非常感谢。条件1确定循环何时停止,如果循环应该永远运行,则可以将其设置为“是”。据我所知,无法可靠地将线程睡眠10毫秒,但您可以尝试[NSThread sleepForTimeInterval:.01];你能提一下条件吗?我想,您所指的条件2是我需要签入代码的条件。你能告诉我如何使线程休眠10毫秒吗?非常感谢。条件1确定循环何时停止,如果循环应该永远运行,则可以将其设置为“是”。据我所知,无法可靠地将线程睡眠10毫秒,但您可以尝试[NSThread sleepForTimeInterval:.01];亲爱的先生,我正在尝试检查条件并更新计数器,但我的计数器一直在更新,但我希望在特定期间更新计数器。那么我如何将这个场景-(void)yourProcessMethod(BOOL\u标志)与这个函数连接起来呢?最后修改了答案,检查它是否符合你的需要。这个代码在一段时间后会导致堆栈溢出。它会消耗所有的CPU时间并阻塞用户界面。@phix23:-是的,伙计,你说的绝对正确。但我刚刚给了他使用的逻辑,我想设置终止条件不会太难。。。。谢谢你宝贵的回答!但是我迷路了,因为我的应用深深地考虑了CPU时间并且需要最低的计算成本。那么@phix23和mAc有什么方法可以用最低的CPU时间消耗来完成这项工作吗?亲爱的先生,我正试图检查条件并更新计数器,但我的计数器一直在更新,但我想在特定的时间段内更新它。那么我如何将这个场景-(void)yourProcessMethod(BOOL\u标志)与这个函数连接起来呢?最后修改了答案,检查它是否符合你的需要。这个代码在一段时间后会导致堆栈溢出。它会消耗所有的CPU时间并阻塞用户界面。@phix23:-是的,伙计,你说的绝对正确。但我刚刚给了他使用的逻辑,我想设置终止条件不会太难。。。。谢谢你宝贵的回答!但是我迷路了,因为我的应用深深地考虑了CPU时间并且需要最低的计算成本。那么@phix23和mAc是否有任何方法可以以最低的CPU时间消耗完成这项工作?