Почему NSTimer отправляет позиции каждые 5 секунд вместо каждых 60? - PullRequest
0 голосов
/ 12 ноября 2018

Почему 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 голосов
/ 12 ноября 2018

Я подозреваю, что из-за многократного запуска функции 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, существует только один его экземпляр.

...