Нет никаких обещаний, что dateB
будет после dateA
.NSDate
основано на системных часах, которые могут подниматься вперед или назад на основе информации NTP.Было бы довольно удивительно, если бы два NSDate
раза столкнулись, но нет никаких обещаний, что этого не произойдет.
Если вам нужно что-то немного лучше, я бы порекомендовал mach_absolute_time()
или CACurrentMediaTime()
.Они всегда увеличиваются во время выполнения вашей программы.Они измеряют время с момента последней загрузки устройства, поэтому они уникальны только до следующей перезагрузки.Если вам нужно что-то, что всегда увеличивается, это довольно легко построить, отслеживая смещение.mach_absolute_time()
отслеживает тики процессора, поэтому я не верю, что два вызова к нему в одном потоке могут возвращать одно и то же значение.