My code is:
-(void) timerRun{...}
-(void) createTimer
{
NSTimer *timer;
timer = [NSTimer timerWithTimeInterval:1.0
target:self
selector:@selector(timerRun)
userInfo:nil
repeats:YES];
}
viewDidLoad
{
[NSThread detachNewThreadSelector:@selector(createTimmer)
toTarget:self withObject:nil];
...
}
When I debug, the method createTimer runs ok, but the method does timerRun not run?
Just creating a timer doesn’t start it running. You need to both create it and schedule it.
You’re actually going to have to do slightly more work than that if you want it to run on a background thread.
NSTimers attach toNSRunloops, which are the Cocoa form of an event loop. EachNSThreadinherently has a a run loop but you have to tell it to run explicitly.A run loop with a timer attached can run itself indefinitely but you probably don’t want it to because it won’t be managing autorelease pools for you.
So, in summary, you probably want to (i) create the timer; (ii) attach it to that thread’s run loop; (iii) enter a loop that creates an autorelease pool, runs the run loop for a bit and then drains the autorelease pool.
Code will probably look like: