Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Objective c 两个互相跟随的[NSDate date]是否总是返回不同的时间?_Objective C_Date_Nsdate - Fatal编程技术网

Objective c 两个互相跟随的[NSDate date]是否总是返回不同的时间?

Objective c 两个互相跟随的[NSDate date]是否总是返回不同的时间?,objective-c,date,nsdate,Objective C,Date,Nsdate,dateA和dateB总是不同的吗 // Two [NSDate date] following each other NSDate *dateA = [NSDate date]; // Line X NSDate *dateB = [NSDate date]; // Line X+1 也就是说,下面的行是否总是返回NO [dateA isEqualToDate:dateB] (“总是”意味着像一个非常快的处理器一样,执行这两个命令的速度不会太快,dateA和dateB将以“亚秒

dateA和dateB总是不同的吗

// Two [NSDate date] following each other
NSDate *dateA = [NSDate date];    // Line X
NSDate *dateB = [NSDate date];    // Line X+1
也就是说,下面的行是否总是返回NO

[dateA isEqualToDate:dateB]
(“总是”意味着像一个非常快的处理器一样,执行这两个命令的速度不会太快,dateA和dateB将以“亚秒”的精度同时分配)


我想为一些内部标识(与数据库无关)设置一个“唯一”的时间戳。

从技术上讲,是的。对NSDate的调用是按顺序进行的,而不是同时进行的,因此调用之间会有一些时间差。但是如果你在寻找唯一的时间戳,那没关系。

不能保证它们是相同的,尽管它们可能取决于时间。当前时间返回的文档状态。它可以在这两行的执行之间改变,或者如果速度足够快,它可以保持不变

如果需要uniques,那么应该考虑生成GUID。签出此:


NSDate的精度为亚毫秒,因此很难想象会出现一种以相同的时间戳结束的场景。预计未来更快的硬件还将提供随性能改进而扩展的定时精度


简单的示例代码只需获取一系列NSDATE,无需任何代码干预。我打赌它们的变化远远超过了最后的小数点,这表明你会没事。

没有保证
dateB
将在
dateA
之后
NSDate
基于系统时钟,系统时钟可以根据NTP信息向前或向后跳动。两次NSDate发生冲突是非常令人惊讶的,但这并不能保证不会发生


如果您需要更好的服务,我建议您使用
mach\u absolute\u time()
CACurrentMediaTime()
。在程序运行期间,它们总是增加。它们是自上次启动设备以来的测量时间,因此在下次重新启动之前它们是唯一的。如果你需要的东西总是在增加,那么通过跟踪一个偏移量来建立它是非常容易的
mach_absolute_time()
跟踪CPU周期,因此我不相信在同一线程上对它的两次调用可以返回相同的值。

您希望有一个保证文档唯一性(CFUUIDRef),还是一个可能但文档不明确唯一性(NSDate)?如果有人能在NSDate上提供明确说明任何一种方式的文档,我很乐意看到。呵呵,是的,我的需求介于“保证文档唯一性”和“可能但文档不明确唯一性”之间。。我也希望有人能为其中一个提供一些明确的证据:)CFUUIDRef使用起来相当简单,而且保证是唯一的。从某种意义上说,这可能是一个错误的问题。如果你告诉我们你真正想要达到的目标,你可能会得到更好的指导。