Tôi đang cố gắng thực hiện thử lại logic với việc trả về theo hàm mũ bằng NSTimer. Mã của tôi trông như thế này:Sử dụng NSTimer để thực hiện thử lại logic với backoff theo hàm mũ
-(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;
}
...
}
Vấn đề tôi đang gặp là bộ đếm thời gian NSTimer scheduledTimerWithTimeInterval dường như bỏ qua những khoảng thời gian tôi đang cung cấp và luôn đặt nó để 0.0. Bất kỳ đề xuất về những gì tôi đang làm sai ở đây?
Cảm ơn! Tôi đoán tôi nên đọc tài liệu lần sau. :) – Ivan