I have a something like this:
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(updateCountdown)
userInfo:nil
repeats:YES];
I am updating a label's text using this timer. Not at a certain condition I want to check if timer is active then invalidate the timer. My question is how do I find that timer is active or not?
NSTimer
has an-isValid
method.Keep the timer in an instance variable, and set
timer = nil
when there's no timer running (i.e. after you call[timer invalidate]
). Then, to check if the timer is active, you can just check whethertimer == nil
.When a non repeating timer fires it marks itself as invalid so you can check whether it is still valid before cancelling it (and of course then ridding yourself of it).
In your case you have a repeating timer so it will always be valid until you take some action to invalidate it. Looks like in this case you are running a countdown so it will be up to you to make sure you invalidate and rid yourself of it when the countdown reaches the desired value (In your updateCountdown method)
In Swift, you can use the
isValid
boolean to see if the timer is running:From the Apple docs: