2012-05-26 9 views
32

Ich muss eine Methode aufrufen, wenn meine App startet und dann die gleiche Methode alle 5 Sekunden aufrufen.Wie NSTimer sofort auslösen?

ist mein Code ist ziemlich einfach:

// 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]; 

Gibt es eine Option für den Timer, so dass es Auslöser ist sofort und dann alle 5 Sekunden?

Antwort

65

NSTimer 's -fire, [timer fire]; ist was du suchst.

Das wird feuern/sofort den Timer aufrufen, der die Zeitverzögerung ablehnt.

13

Sie können den Timer nicht planen und das Ereignis sofort in derselben Codezeile auslösen. Also müssen Sie es in 2 Zeilen Code tun.

Zunächst planen Sie den Timer, dann rufen Sie uns sofort ‚Feuer‘ auf dem Timer:

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

Wenn Feuer genannt wird, das Zeitintervall, das Ihre Timer Feuer wartet wird zurückgesetzt, da es gerade lief, und dann wird danach im festgelegten Intervall weiterlaufen - in diesem Fall alle 5 Sekunden.

3

Sie können den Timer initialisieren und es in der gleichen Zeile Feuer:

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

Sehr schöne Syntax! – loretoparisi