0

当我退出控制器时,我想对我的 NSTimer 做一些事情,这样我就不会在 viewDidDisappear 中使 NSTimer 无效

    self.timer = [NSTimer scheduledTimerWithTimeInterval:1
                                                  target:self
                                                selector:@selector(stopWatch)
                                                userInfo:nil
                                                 repeats:YES];

- (void)stopWatch
{
// Do something
NSLog(@"stopWatch");
}

-(void)viewDidDisappear:(BOOL)animated {
// Do not invalidate NSTimer here;
}

退出此控制器后,我返回此控制器并

- (void)viewDidLoad
{
[self.timer invalidate];
    self.timer = nil;
    self.timer = [NSTimer scheduledTimerWithTimeInterval:1
                                                  target:self
                                                selector:@selector(stopWatch)
                                                userInfo:nil
                                                 repeats:YES] ;
}

所以我有 2 个 NSTimer 同时运行

当我制作一个新的 NSTimer 时,如何使我以前的 NSTimer 失效?

最好的祝福

4

2 回答 2

1

目前还不是很清楚到底是什么问题,但是如果你想要一个持久的计时器,那么如果存在旧的计时器,我就不会创建一个新的计时器:

- (void)viewDidLoad
{
   if (self.timer == nil)
   {
       self.timer = [NSTimer scheduledTimerWithTimeInterval:1
                                                     target:self
                                                   selector:@selector(stopWatch)
                                                   userInfo:nil
                                                    repeats:YES];
   }

   ...
}
于 2013-07-17T10:25:43.173 回答
1

存储对它的引用并使用:

if([timer isValid]){
    [timer invalidate];
}

或出于您的目的:

if(![timer isValid]){
    //create timer
}
于 2013-07-17T10:28:59.373 回答