2009-08-20 5 views
1

Я использую этот код:NSTimer проблема

timer = [NSTimer scheduledTimerWithTimeInterval:2 
             target:self 
             selector:@selector(update) 
             userInfo:nil 
             repeats:YES]; 
... 

-(void)update { 
    NSDate *date = [NSDate date]; 
    NSString *Currentdate = [date descriptionWithCalendarFormat:@"%b %d, %Y %I:%M:%S %p" 
                 timeZone:nil 
                 locale:nil]; 
    lbl.text = Currentdate; 
} 

Он отлично работает, но я хочу, чтобы изменить интервал таймера от 2 секунд до 1 секунды во время выполнения. Как я могу это сделать?

Заранее спасибо.

+0

запланированныйTimerWithTimeInterval: 1 вместо 2? – diciu

+0

Я думаю, он хочет знать, как изменить интервал для таймера после его создания? – jhauberg

ответ

2

invalidate Старый таймер и создать новый. Я не думаю, что NSTimer поддерживает изменение временного интервала, это будет лишний рывок как в интерфейсе, так и в реализации.

10

Вы не можете изменить интервал таймера после его создания.

// You have to invalidate it...be careful, 
// this releases it and will crash if done to an already invalidated timer 

if (self.timer != nil) { 
    [self.timer invalidate]; 
    self.timer = nil; 


//... then declare a new one with the different interval. 

timer = [NSTimer scheduledTimerWithTimeInterval:newInterval 
            target:self 
            selector:@selector(update) 
            userInfo:nil 
            repeats:YES]; 
}