UIEvent有时间戳。如何自己生成等效值?

时间:2010-03-09 00:30:05

标签: iphone objective-c cocoa

根据cocoa文档,timestamp上的UIEvent是“自系统启动以来的秒数”。这是一个NSTimeInterval

我想尽可能有效地生成一个等价的数字。当然,想要在UIEvent不发光的情况下这样做。 : - )

2 个答案:

答案 0 :(得分:6)

好的,我做了一点挖掘,这就是我想出的:

#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 and return
    return (NSTimeInterval) ((double) absTime / 1000000000.0);
}

这似乎等同于timestamp的{​​{1}},UIEvent给出的内容很有意义。

答案 1 :(得分:2)

也许您可以将NSDate方法-timeIntervalSinceDate:mach基于框架的函数GetPIDTimeInNanoseconds结合使用,以获得相同的结果。