You cannot reliably get the timer to call your updateTime:
method after exactly 4.7404 seconds. The iPhone does not guarantee any particular level of accuracy for timers.
Also, it takes time for iOS to turn your "Sound p 1" string into a bitmap and put it in the framebuffer. So even if you got called at exactly 4.7404 seconds, it would be later before the frame buffer was updated.
Also, the iPhone's LCD display has a non-zero response time. So after iOS updates the framebuffer, it will take time for the pixels on the screen to change.
Also, humans cannot detect changes at a .0001 second level of accuracy. So even if the pixels changed completely at exactly 4.7404 seconds, the user couldn't tell that it didn't happen at 4.739 seconds or at 4.741 seconds.
So what you are demanding is silly.
You should just display your message as soon as possible after at least 4.7404 seconds have elapsed:
- (void)updateTime:(NSTimer *)timer
{
// Give your object a BOOL didSeeImportantTime property.
if (!self.didSeeImportantTime) {
currentLocation = audio.currentTime;
if (currentLocation < 4.7404) {
[lblCurrentLocation setText:[NSString stringWithFormat:@"%.4f Sec",currentLocation]];
} else {
self.didSeeImportantTime = YES;
[lblMsg setText:@"Sound p 1"];
}
}
}