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]);
}