我在我的一個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");
}
據basicly調用方法stopTimer會給null值的計時器。
- (void) stopTimer
{
[timer invalidate];
timer = nil;
}
我的問題是即使我離開我的視圖,我的函數仍然執行。並永不停止。我怎樣才能解決這個問題?
編輯:
這是我的NSTimer調用的函數:
- (void) MyFunctionCalledByNSTimer
{
[timer invalidate];
timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
target:self selector:@selector(Function1) userInfo:nil repeats:YES];
}
我宣佈我的NSTimer在我的viewController
NSTimer *timer;
的.M如果您需要更多撕成小塊的代碼只是問,我會編輯問題。
'1)'您的'viewWillDisappear:'不會編譯,因爲它缺少'}' - 請添加完整,正確的方法。 '2)'你不是在調用'[super viewWillDisappear:animated];' - 請將其添加到你的方法中。 '3)'請添加由計時器調用的函數,該函數經常運行到該問題。 '4)'請添加聲明定時器的代碼以及它將運行的方法。 –
請問您可以添加創建nstimer的代碼或創建nstimer的代碼? –
@RoboticCat我們不需要調用super viewWillDisappear,除非我們想重寫它。即使我們沒有調用super,該方法也會被調用! –