Sök…


parametrar

Parameter detaljer
interval Tiden, på några sekunder, för att vänta på att skjuta timern; eller, vid upprepade timers, tiden mellan bränningen.
target Objektet att ringa selector
selector I Swift, ett Selector objekt som anger metoden att anropa på target
repeats Om det är false , avfyra timern endast en gång. Om det är true , avfyra timern varje interval .

Anmärkningar

Med en NSTimer kan du skicka ett meddelande till ett mål efter en viss tidsperiod.

Skapa en timer

Detta skapar en timer för att ringa doSomething metoden på sig self på 5 sekunder.

Snabb

let timer = NSTimer.scheduledTimerWithTimeInterval(5,
                               target: self,
                             selector: Selector(doSomething()),
                             userInfo: nil,
                              repeats: false)

Snabb 3

 let timer = Timer.scheduledTimer(timeInterval: 1,
                                        target: self, 
                                      selector: #selector(doSomething()), 
                                      userInfo: nil, 
                                       repeats: true)

Objective-C

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(doSomething) userInfo:nil repeats:NO];

Inställning av repetitioner till false/NO indikerar att vi vill att timern bara ska avfyras en gång. Om vi ställer in detta till true/YES , kommer det att avfyras var femte sekund tills manuellt ogiltigt.

Manuellt avfyra en timer

Snabb

timer.fire()

Objective-C

[timer fire];

Ringa fire metoden orsakar en NSTimer att utföra uppgiften skulle det ha vanligtvis utförs på ett schema.

I en timer som inte upprepas gör detta timern automatiskt ogiltig. Det vill säga att det att ringa fire innan tidsintervallet är upp kommer att resultera i endast en åkallelse.

I en upprepande timer kommer detta helt enkelt att åberopa handlingen utan att avbryta det vanliga schemat.

Invaliderar en timer

Snabb

timer.invalidate()

Objective-C

[timer invalidate];

Detta stoppar timern från att skjutas. Måste ringas från den tråd som timern skapades i, se Apples anteckningar :

Du måste skicka detta meddelande från tråden som timern installerades på. Om du skickar det här meddelandet från en annan tråd, kan det hända att ingångskällan som är associerad med timern inte tas bort från sin körslinga, vilket kan förhindra att tråden går ut ordentligt.

Anmärkningar: När timern har inaktiverats, är det omöjligt att avfyra samma ogiltiga timer. Istället måste du initiera den ogiltiga timern igen och utlösa brandmetoden.

Alternativ för timerfrekvens

Upprepad timerhändelse

Snabb

class ViewController: UIViewController {
 
    var timer = NSTimer()
    
    override func viewDidLoad() {
        NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: true)
    }

    func timerMethod() {
        print("Timer method called")
    }

    func endTimer() {
        timer.invalidate()
    }
}

Snabb 3

class ViewController: UIViewController {
     
        var timer = Timer()
        
        override func viewDidLoad() {
            Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: true)
        }
    
        func timerMethod() {
            print("Timer method called")
        }

        func endTimer() {
            timer.invalidate()
        }
    }

Måste inaktiveras manuellt om så önskas.

Snabb

Icke upprepad fördröjd timerhändelse

NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: false)

Snabb 3

 Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: false)

Timern avfyras en gång, 3 sekunder efter genomförandet. Inaktiveras automatiskt, efter avfyrning.

Överföring av data med Timer

Om du vill skicka data med timerutlösaren kan du göra det med parametern userInfo .

Här är det enkla tillvägagångssättet som ger en kort uppfattning om hur du kan skicka data till den utlösta metoden från timern.

[ Swift 3 ]

Timer.scheduledTimer(timeInterval: 1.0, target: self, selector:#selector(iGotCall(sender:)), userInfo: ["Name": "i am iOS guy"], repeats:true)

[ Mål - C ]

NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                      target:self
                                                    selector:@selector(iGotCall:)
                                                    userInfo:@"i am iOS guy" repeats:YES];

Ovanstående kodrad överför ["Name": "i am iOS guy"] till userInfo . Så nu när iGotCall får samtal kan du få det överförda värdet enligt kodavsnittet nedan.

[ Swift 3 ]

func iGotCall(sender: Timer) {
        print((sender.userInfo)!)
    }

[ Mål - C ]

- (void)iGotCall:(NSTimer*)theTimer {
    NSLog (@"%@", (NSString*)[theTimer userInfo]);
}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow