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