Ios 在何处正确启动并使NSTimer无效?

Ios 在何处正确启动并使NSTimer无效?,ios,nstimer,Ios,Nstimer,在xcode中,当我记录我的NSTimer时,它从ViewDidDisplay开始,并在ViewDidEnglish上停止,这很好,但当我进入退出阶段时,计时器会恢复,这是我不希望发生的,因为它会加倍。我如何正确地停止它,使它在再次调用时不会加倍 …当我在viewdidload上输入时。确保它不会加倍,但它不会再次启动,因为我使它无效ViewDidEnglish这是我的代码 -(void)viewDidAppear:(BOOL)animated{ if (self.timeInc.isV

在xcode中,当我记录我的NSTimer时,它从ViewDidDisplay开始,并在ViewDidEnglish上停止,这很好,但当我进入退出阶段时,计时器会恢复,这是我不希望发生的,因为它会加倍。我如何正确地停止它,使它在再次调用时不会加倍

…当我在viewdidload上输入时。确保它不会加倍,但它不会再次启动,因为我使它无效ViewDidEnglish这是我的代码

-(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:。。。如果您松开,那么控制器应该在计时器被销毁之前销毁它-您的控制器是被销毁还是被人为保留?当你说“加倍”时,你的意思是你有额外的计时器在运行吗?不,我的意思是,一旦我再次打开此视图,将添加另一个计时器,然后一次又一次。这可能会使应用程序崩溃