Zoeken…


parameters

Parameter Details
interval De tijd, in seconden, om te wachten voordat de timer wordt geactiveerd; of, in herhalende timers, de tijd tussen het schieten.
target Het object dat de selector inschakelen
selector In Swift een Selector object dat de methode opgeeft om het target aan te roepen
repeats Als de waarde niet false , start u de timer slechts eenmaal. Indien true , start de timer elke interval seconden.

Opmerkingen

Met een NSTimer kunt u een bericht naar een doel sturen nadat een opgegeven periode is verstreken.

Een timer maken

Hiermee wordt een timer gemaakt om de doSomething methode in 5 seconden op self te roepen.

Snel

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

Swift 3

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

Doelstelling C

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

Herhalingen instellen op false/NO geeft aan dat we willen dat de timer slechts eenmaal wordt geactiveerd. Als we dit instellen op true/YES , wordt het elke vijf seconden geactiveerd totdat het handmatig ongeldig wordt.

Een timer handmatig activeren

Snel

timer.fire()

Doelstelling C

[timer fire];

Het aanroepen van de fire methode veroorzaakt een NSTimer om de taak zou hebben meestal uitgevoerd op een schema uit te voeren.

In een niet-herhalende timer maakt dit de timer automatisch ongeldig. Dat wil zeggen, het aanroepen van fire voordat het tijdsinterval is verstreken, resulteert in slechts één aanroep.

In een herhalende timer zal dit eenvoudig de actie oproepen zonder het gebruikelijke schema te onderbreken.

Een timer ongeldig maken

Snel

timer.invalidate()

Doelstelling C

[timer invalidate];

Hierdoor wordt de timer gestopt. Moet worden opgeroepen vanuit de thread waarin de timer is gemaakt, zie de opmerkingen van Apple :

U moet dit bericht verzenden vanaf de thread waarop de timer is geïnstalleerd. Als u dit bericht vanaf een andere thread verzendt, wordt de ingangsbron die aan de timer is gekoppeld mogelijk niet uit de runlus verwijderd, waardoor de thread mogelijk niet correct wordt afgesloten.

Opmerkingen: Zodra de timer ongeldig is gemaakt, is het onmogelijk om dezelfde ongeldige timer af te vuren. In plaats daarvan moet u de ongeldige timer opnieuw initialiseren en de brandmethode activeren.

Timer frequentie opties

Herhaalde timergebeurtenis

Snel

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()
    }
}

Swift 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()
        }
    }

Moet desgewenst handmatig worden ongeldig gemaakt.

Snel

Niet-herhaalde vertraagde timergebeurtenis

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

Swift 3

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

Timer wordt eenmaal geactiveerd, 3 seconden na uitvoeringstijd. Wordt automatisch ongeldig zodra deze is ontslagen.

Gegevens doorgeven met behulp van Timer

Als u gegevens wilt doorgeven met de timer-trigger, kunt u dit doen met de parameter userInfo .

Hier is de eenvoudige aanpak die een kort idee geeft over hoe u de gegevens kunt doorgeven aan de getriggerde methode vanuit de timer.

[ Swift 3 ]

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

[ Doelstelling - C ]

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

De bovenstaande coderegel geeft ["Name": "i am iOS guy"] aan userInfo . Dus nu wanneer de iGotCall aanroep krijgt, kunt u de doorgegeven waarde krijgen zoals hieronder codefragment.

[ Swift 3 ]

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

[ Doelstelling - C ]

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow