2012-05-26 18 views
32

Potrzebuję wywołać metodę, gdy moja aplikacja się uruchamia, a następnie wywołać tę samą metodę co 5 sekund.Jak uruchomić NSTimer od razu?

Mój kod jest dość prosty:

// Call the method right away 
[self updatestuff:nil] 

// Set up a timer so the method is called every 5 seconds 
timer = [NSTimer scheduledTimerWithTimeInterval: 5 
              target: self 
             selector: @selector(updatestuff:)  
             userInfo: nil 
             repeats: YES]; 

Czy istnieje opcja dla timera więc jest to wyzwalacz od razu, a następnie co 5 sekund?

Odpowiedz

65

NSTimer 's -fire, [timer fire]; jest tym, czego szukasz.

Spowoduje to natychmiastowe wywołanie timera zwalniającego czas.

13

Nie można zaplanować stopera i natychmiast wywołać zdarzenia w tym samym wierszu kodu. Musisz to zrobić w 2 liniach kodu.

pierwsze, harmonogram czasowy, po czym natychmiast wezwać „ogień” na zegar:

timer = [NSTimer scheduledTimerWithTimeInterval: 5 
             target: self 
            selector: @selector(updatestuff:)  
            userInfo: nil 
            repeats: YES]; 
[timer fire]; 

Kiedy ogień jest nazywany, przedział czasu, że zegar czeka na ogień zostanie zresetowany, ponieważ po prostu zabrakło, a następnie będzie dalej działać w wyznaczonym przedziale czasu - w tym przypadku co 5 sekund.

3

można zainicjować timer i wystrzelić ją w tej samej linii:

[(checkStatusTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(checkStatusTimerTick:) userInfo:nil repeats:YES]) fire]; 
+1

Bardzo ładny składni! – loretoparisi

Powiązane problemy