У меня есть функция в одном из моих viewControllers, которые я выполняю каждые 10 секунд.IOS - Objective C - Как прекратить выполнение периодической функции при выходе из представления?
Я хочу, чтобы эта функция прекратила выполнение, когда я выхожу из представления.
Я попробовал этот мир кода:
-(void)viewWillDisappear:(BOOL)animated
{
NSError *error2;
if ([_managedObjectContext save:&error2] == NO) {
NSAssert(NO, @"Save should not fail\n%@", [error2 localizedDescription]);
abort();
}
else
NSLog(@"Context Saved");
[self stopTimer];
NSLog(@"View will disappear now");
}
Он основно вызывая метод StopTimer, который даст значение NULL для таймера.
- (void) stopTimer
{
[timer invalidate];
timer = nil;
}
Моя проблема заключается в том, что моя функция продолжает выполняться, даже если я выхожу из своего представления. и никогда не останавливается. Как я могу это исправить?
EDIT:
Это функция называется моим NSTimer:
- (void) MyFunctionCalledByNSTimer
{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
target:self selector:@selector(Function1) userInfo:nil repeats:YES];
}
Я заявляю о своем NSTimer в ом моего ViewController
NSTimer *timer;
Если вам нужно больше миров кода просто спросите, и я отредактирую вопрос.
'1)' Your 'viewWillDisappear:' не будет компилироваться, поскольку отсутствует '' '- пожалуйста, добавьте полный, правильный метод. '2)' Вы не вызываете '[super viewWillDisappear: animated];' - пожалуйста, добавьте это в свой метод. '3)' Пожалуйста, добавьте функцию, вызванную таймером, которая постоянно работает с вопросом. '4)' Пожалуйста, добавьте код, объявляющий таймер, и метод, который будет запущен. –
можете ли вы добавить код для создания nstimer или где вы создали nstimer? –
@RoboticCat нам не нужно вызывать супер viewWillDisappear, если мы не хотим его переопределить. Метод будет вызван, хотя мы не называем супер! –