为什么NSTimer每5秒而不是每60秒发送一次职位?

时间:2018-11-11 23:14:40

标签: objective-c time nstimer

为什么NSTimer每5秒发送一次位置而不是每60秒发送一次?

- (void)startTimer {
self.timer = [NSTimer scheduledTimerWithTimeInterval:60.0
                                 target:self
                               selector:@selector(sendPosition)
                               userInfo:nil
                                repeats:YES];
}

- (void)stopTimer {
    if(self.timer){
        [self.timer invalidate];
        self.timer = nil;
    }
}

1 个答案:

答案 0 :(得分:3)

我怀疑由于多次启动startTimer函数而创建了多个计时器。为确保此类计时器只有一个实例,您可以实现以下内容。

- (void)startTimer {

// stop and remove timer first if it is already there
   if(self.timer){
        [self.timer invalidate];
        self.timer = nil;
    }

self.timer = [NSTimer scheduledTimerWithTimeInterval:60.0
                                 target:self
                               selector:@selector(sendPosition)
                               userInfo:nil
                                repeats:YES];
}

这样,无论调用startTimer多少次,都只有一个实例。