plus simple est de prévoir une NSTimer
sur les fils conducteurs en boucle de fonctionner. Je suggère que le code suivant est implémenté sur votre délégué d'application et que vous appelez setupTimer
de applicationDidFinishLaunching:
.
-(void)setupTimer;
{
NSTimer* timer = [NSTimer timerWithTimeInterval:10 * 60
target:self
selector:@selector(triggerTimer:)
userInfo:nil
repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}
-(void)triggerTimer:(NSTimer*)timer;
{
// Do your stuff
}
Si vos trucs ici prend beaucoup de temps, et vous ne pouvez pas tenir le fil conducteur alors soit appeler vos affaires à l'aide:
[self performSelectorInBackground:@selector(myStuff) withObject:nil];
Ou vous pouvez exécuter le NSTimer
sur un arrière-plan fil par quelque chose comme ça (je suis l'objet intentionnellement une fuite de fil):
-(void)startTimerThread;
{
NSThread* thread = [[NSThread alloc] initWithTarget:self
selector:@selector(setupTimerThread)
withObject:nil];
[thread start];
}
-(void)setupTimerThread;
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSTimer* timer = [NSTimer timerWithTimeInterval:10 * 60
target:self
selector:@selector(triggerTimer:)
userInfo:nil
repeats:YES];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:timer forModes:NSRunLoopCommonModes];
[runLoop run];
[pool release];
}
-(void)triggerTimer:(NSTimer*)timer;
{
// Do your stuff
}
merci beaucoup. En général –