A better alternative is to set up a timer that calls you back from time to time. Cocoa offers the
NSTimer
class for this. It offers a wealth of methods to set up the timer and insert it into the RunLoop. The timer will then send from time to time a message to a method of your app that does the job.It is actually easy to create the job. First you need to decide which method will be notified. In our example here it is
- (void) runIt
(with no arguments).The code to set up the timer could then look like this:
NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:10.0
target:self
selector: @selector(runIt)
userInfo:nil
repeats: YES];
So this one schedules the execution of the runIt method of the same class the timer is created in, to repeat every 10 seconds.
Simple.
To cancel the timer again, one just has to send it an invalidate method:
[timer invalidate]
I was first experimenting with
scheduledTimerWithTimeInterval:invocation:repeats:
but for whatever reason it did not work, even if the timer said it is valid. But the above works well for me and is even easier.