I am creating and firing a NSTimer
with:
ncTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(handleTimer:)
userInfo:nil
repeats:YES];
[ncTimer fire];
AND
- (void)handleTimer:(NSTimer *)chkTimer {
// do stuff
}
I am retaining my timer with:
@property (nonatomic, retain) NSTimer *ncTimer;
For some reason the timer is not repeating. It is firing once only and than never again.
Assigning to
ncTimer
as you have will not initiate the propertiesretain
functionality.Assuming the declaration is within the member object you will need to do:
You can't just assign to the timer that you have put as a property in your header. This should work:
Also: The fire method fires the timer, out of cycle. If the timer is non repeating it is invalidated. After the line that says fire, add this:
Got it
Adding timer to
mainRunLoop
made it workingThe
-fire:
method manually fires it once. For a timer to be started and repeat, you have to add it to a runloop using[[NSRunLoop currentRunLoop] addTimer: forMode:]
You can also copy your code inside this block, which inserts the creation of the Timer in the main thread.
The code will therefore remain: