Ios 在何处正确启动并使NSTimer无效?
在xcode中,当我记录我的NSTimer时,它从ViewDidDisplay开始,并在ViewDidEnglish上停止,这很好,但当我进入退出阶段时,计时器会恢复,这是我不希望发生的,因为它会加倍。我如何正确地停止它,使它在再次调用时不会加倍 …当我在viewdidload上输入时。确保它不会加倍,但它不会再次启动,因为我使它无效ViewDidEnglish这是我的代码Ios 在何处正确启动并使NSTimer无效?,ios,nstimer,Ios,Nstimer,在xcode中,当我记录我的NSTimer时,它从ViewDidDisplay开始,并在ViewDidEnglish上停止,这很好,但当我进入退出阶段时,计时器会恢复,这是我不希望发生的,因为它会加倍。我如何正确地停止它,使它在再次调用时不会加倍 …当我在viewdidload上输入时。确保它不会加倍,但它不会再次启动,因为我使它无效ViewDidEnglish这是我的代码 -(void)viewDidAppear:(BOOL)animated{ if (self.timeInc.isV
-(void)viewDidAppear:(BOOL)animated{
if (self.timeInc.isValid == NO){
self.timeInc = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateDetailCounter:) userInfo:([Dateformatter2() dateFromString:_DetailModal[1]]) repeats:YES];
}
}
-(void)viewDidDisappear:(BOOL)animated{
[self.timeInc invalidate];
}
你可以试试这个,过去我在ViewDidEmerge和ViewDidEmerge中也有同样的问题
- (void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
if (self.timerInc) {
[self.timerInc invalidate];
self.timerInc = nil;
}
_timerInc = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(doSth) userInfo:nil repeats:YES];
}
- (void) viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.timerInc invalidate];
self.timerInc = nil;
}
当我转到退出序列时,你是什么意思?它转到位于导航页面根视图上的此“展开”命令-IBActionunwindToMain:UIStoryboardSegue*segue{}如果覆盖ViewDidDisplay:,ViewDidEnglish:。。。如果您松开,那么控制器应该在计时器被销毁之前销毁它-您的控制器是被销毁还是被人为保留?当你说“加倍”时,你的意思是你有额外的计时器在运行吗?不,我的意思是,一旦我再次打开此视图,将添加另一个计时器,然后一次又一次。这可能会使应用程序崩溃