Вопрос по objective-c, iphone, ios – Выполните «если» условие «x» миллисекунды и остановитесь на «y» миллисекунду и повторите условие?

2

У меня есть программа, которая проверяет условие внутри цикла if непрерывно во время выполнения программы. Но я хочу этогоif condition стать истинным или активным в течение определенного периода времени (скажем, в течение 5 мс), а затем отключитьif condition в течение следующих 10 мс. Затем продолжайте эту процедуру непрерывно, пока пользователь не закроет программу. Я понятия не имею, подойти к этому, пожалуйста, помогите мне!

Ваш Ответ

2   ответа
-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 это разница между началом и сейчас, в секундах, с точностью до миллисекунды.

Вычислите истекшее время, т.е. timeInterval, проверьте его значение и сравните его с тем, является ли оно & lt; 5 мс или 10 [self yourProcessMethod (TRUE / FALSE)] ;.

I hope this Helps you. :) Если да, вы можете принять ответ или проголосовать за него :)

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded sam
Error: User Rate Limit Exceeded
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;
}

Обратите внимание, что, вероятно, не очень реалистично ожидать точность с точностью до миллисекунды.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded sam

Похожие вопросы