Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIEvent具有时间戳。我怎样才能自己生成一个等价值?_Iphone_Objective C_Cocoa - Fatal编程技术网

Iphone UIEvent具有时间戳。我怎样才能自己生成一个等价值?

Iphone UIEvent具有时间戳。我怎样才能自己生成一个等价值?,iphone,objective-c,cocoa,Iphone,Objective C,Cocoa,根据cocoa文档,UIEvent上的timestamp是“系统启动后的秒数”。它是一个NSTimeInterval 我希望尽可能高效地生成一个等价的数字。当然,我想在UIEvent不发光的地方这样做。:-) 也许你可以将NSDate方法和mach基于框架的函数结合起来得到相同的结果。也许你可以将NSDate方法和mach基于框架的函数结合起来得到相同的结果。好的,我做了一点挖掘,下面是我得出的结论: #import <mach/mach.h> #import <mach/ma

根据cocoa文档,
UIEvent
上的
timestamp
是“系统启动后的秒数”。它是一个
NSTimeInterval


我希望尽可能高效地生成一个等价的数字。当然,我想在
UIEvent
不发光的地方这样做。:-)

也许你可以将
NSDate
方法和
mach
基于框架的函数结合起来得到相同的结果。

也许你可以将
NSDate
方法和
mach
基于框架的函数结合起来得到相同的结果。

好的,我做了一点挖掘,下面是我得出的结论:

#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);
}
#导入
#进口
+(NSTimeInterval)时间戳
{
//获取时基信息--在电话和OSX上不同
马赫时基信息数据信息;
马赫时基信息(和信息);
//抓紧时间
uint64_t absTime=马赫绝对时间();
//应用时基信息
absTime*=信息编号;
absTime/=info.denom;
//将纳秒转换为秒并返回
返回(NSTimeInterval)((双精度)absTime/100000000.0);
}

这似乎相当于
UIEvent
中的
timestamp
,考虑到
mach\u absolute\u time()
所做的事情非常有意义。

好的,我做了一些挖掘,下面是我得出的结论:

#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);
}
#导入
#进口
+(NSTimeInterval)时间戳
{
//获取时基信息--在电话和OSX上不同
马赫时基信息数据信息;
马赫时基信息(和信息);
//抓紧时间
uint64_t absTime=马赫绝对时间();
//应用时基信息
absTime*=信息编号;
absTime/=info.denom;
//将纳秒转换为秒并返回
返回(NSTimeInterval)((双精度)absTime/100000000.0);
}

这似乎相当于
UIEvent
中的
timestamp
,考虑到
mach\u absolute\u time()
的作用,这是非常有意义的

(为了明确起见,对于我的应用程序,我计划保留
UIEvent
对象中的
timestamp
值以及我自己生成的
timestamp
值,并且我希望这些值的顺序有意义。因此我希望生成的
timestamp
值与
UIEvent
中的值具有意义上的可比性)您在中的解决方案工作正常,但代码调试起来非常困难。时间戳函数似乎不会停止时间增量,我想这是意料之中的。您是否遇到过同样的问题?如果我有更多的信誉点,我会将此作为注释写下:)(为了明确起见,对于我的应用程序,我计划保留
UIEvent
对象中的
timestamp
值以及我自己生成的
timestamp
值,并且我希望这些值的顺序有意义。因此我希望生成的
timestamp
值与
UIEvent
中的值具有意义上的可比性)您在中的解决方案工作正常,但代码调试起来非常困难。时间戳函数似乎不会停止时间增量,我想这是意料之中的。您是否遇到过同样的问题?如果我有更多的信誉点,我会将此作为注释写下:)我查看了
getpidtimeinnanoses
并意识到
mach_absolute_time()
是一个理想的地方。所以我在上面的答案中写下了这段代码。谢谢。我查看了
GetPIDTimeInNanoseconds
并意识到
mach\u absolute\u time()
是一个理想的地方。所以我在上面的答案中写下了这段代码。谢谢。iPhone上是否存在
absolutetonanoses
?如果是这样,那么使用它比使用时基信息更容易。如果不是,我建议将分子除以分母(将其中一个除以
NSTimeInterval
),然后乘以该分数。绝对的纳秒不是碳API吗?我没有考虑过使用它。。。不确定它在手机上的可用性。iPhone上是否存在
absolutetonanoses
?如果是这样,那么使用它比使用时基信息更容易。如果不是,我建议将分子除以分母(将其中一个除以
NSTimeInterval
),然后乘以该分数。绝对的纳秒不是碳API吗?我没有考虑过使用它。。。不确定它在电话上是否可用。