30

Possible Duplicate:
NSTimer doesn't stop

I have this code:

[NSTimer scheduledTimerWithTimeInterval:110.0
                                 target:self
                               selector:@selector(targetMethod:)
                               userInfo:nil
                                repeats:YES];

- (void) targetMethod:(NSTimer) timer{
NSLog(@"Hello World");}

in targetMethod I can stop timer with [timer invalidate], but out of this method, How can I stop targetMethod?

Community
  • 1
  • 1
cyclingIsBetter
  • 17,447
  • 50
  • 156
  • 241

2 Answers2

74

You can keep your NSTimer in a variable and stop the timer using the invalidate method. Like the following:

NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:110.0
                                 target:self
                               selector:@selector(targetMethod:)
                               userInfo:nil
                                repeats:YES];

[myTimer invalidate];
Raphael Petegrosso
  • 3,870
  • 2
  • 24
  • 27
17

One way to do it is to create NSTimer *timer; as a global variable so you can have a handle to the timer. Some thing likes this:

NSTimer *timer;  //global var

timer = [NSTimer scheduledTimerWithTimeInterval:110.0
                                 target:self
                               selector:@selector(targetMethod:)
                               userInfo:nil
                                repeats:YES];

To stop timer somewhere in the same class:

[timer invalidate];
user523234
  • 14,323
  • 10
  • 62
  • 102