IOS: остановите NSTimer [дубликат]


Возможный дубликат:
NSTimer не останавливается

У меня есть такой код:

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

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

В targetMethod я могу остановить таймер с [таймер недействительной], но этот способ, как я могу остановить targetMethod?

2 27

2 ответа:

Вы можете сохранить ваш NSTimer в переменной и остановить таймер, используя метод invalidate. Например, следующее:

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

[myTimer invalidate];

Один из способов сделать это-создать NSTimer *timer; в качестве глобальной переменной, чтобы у вас был дескриптор к таймеру. Некоторым вещам это нравится:

NSTimer *timer;  //global var

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

Чтобы остановить таймер где-то в том же классе:

[timer invalidate];