If you’re an iPhone developer, you’ve no doubt noticed that UIEvent has a
timestamp value. According to the documentation, this is the time (in seconds)
since system boot.
So what happens when you want to generate an equivalent timestamp somewhere that
you’re not using UIEvent?
I did a little digging; here’s what I came up with:
#import <mach/mach.h>
#import <mach/mach_time.h>
+ (NSTimeInterval)timestamp
{
// get the timebase info -- different on phone and OSX
mach_timebase_info_data_t info;
mach_timebase_info(&info);
// get the time
uint64_t absTime = mach_absolute_time();
// apply the timebase info
absTime *= info.numer;
absTime /= info.denom;
// convert nanoseconds into seconds
return (NSTimeInterval) ((double)absTime / 1000000000.0);
}
This will give you NSTimeIntervals that are meaningfully comparable to those
collected from UIEvent instances.