i don't understand this example from the doc : the timeIntervalSinceNow
method should show a positive value, but how can we reach "5" as mentioned in the code? (i think it's either 0 more or less, or -10 , -20, -30 etc... but how can we get a positive value such as 5?) :
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
// test the age of the location measurement to determine if the measurement is cached
// in most cases you will not want to rely on cached measurements
NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
if (locationAge > 5.0) return;
Thanks for your help
If the result of the timeIntervalSinceNow
call is negative (meaning that the timestamp is in the past (which, in this case, it always will be)) it will be converted to a positive number. -2.5
would become +2.5
, for example (and vice versa).
Then you test the inverted-sign value, to see if it is greater than 5.0 -- in this case, that means the timestamp is from more than five seconds ago. If it is, you do nothing with the location data, because it's too old to be useful.
Personally, I would have written this without the sign inversion, using a negative number in the test:
if( [[newLocation timestamp] timeIntervalSinceNow] < -5.0 ) return;