The key is to start that recurring timer at the right time. Get the current time and find out how many seconds we are into the current minute...
NSDateComponents *components = [[NSCalendar currentCalendar] components: NSSecondCalendarUnit fromDate:[NSDate date]];
NSInteger second = [components second];
From this we can get the number of seconds until the next minute...
NSInteger tillNextMinute = (60 - second) % 60;
I haven't tested that, but the idea of the mod 60 is to handle the case when second is zero. Now we're almost done...
[self performSelector:@selector(startTimer) withObject:nil afterDelay:tillNextMinute];
Then the code you began with...
- (void)startTimer {
// contains the code you posted to start the timer
}