Использование NSTimer для реализации логики повторных попыток с экспоненциальной отсрочкой

Я пытаюсь реализовать логику повторных попыток с экспоненциальной отсрочкой с помощью NSTimer. Мой код выглядит следующим образом:

-(void)start
{
  [NSTimer scheduledTimerWithTimeInterval:0.0 target:self
    selector:@selector(startWithTimer:) userInfo:nil repeats:NO];
}

-(void)startWithTimer:(NSTimer *)timer
{
  if (!data.ready) {
    // timer.timeInterval == 0.0 ALWAYS!
    NSTimeInterval newInterval = timer.timeInterval >= 0.1 ? timer.timeInterval * 2 : 0.1;
    newInterval = MIN(60.0, newInterval);
    NSLog(@"Data provider not ready. Will try again in %f seconds.", newInterval);
    NSTimer * startTimer = [NSTimer scheduledTimerWithTimeInterval:newInterval target:self
        selector:@selector(startWithTimer:) userInfo:nil repeats:NO];
    // startTimer.timeInteval == 0.0 ALWAYS!
    return;
  }

 ...
}

Проблема, с которой я сталкиваюсь, заключается в том, что таймер NSTimer ScheduleTimerWithTimeInterval, по-видимому, игнорирует интервал, который я предоставляю, и всегда устанавливает его на 0,0. Любые предложения о том, что я делаю неправильно здесь?

5
задан Ivan 23 April 2012 в 04:22
поделиться