Осторожно!
Я недавно узнал, что на iOS 8.1 (.0) [NSDate dateWithTimeInterval:0 sinceDate:date1]
возвращает date1
!Даже alloc / init возвращает один и тот же объект.
Глубокая копия была для меня важна, так как я создаю копии объектов.Позже я сравниваю метки времени с [date1 laterDate:date2] == date2
, который всегда будет истинным, если не работает глубокая копия.
То же самое для [date1 dateByAddingTimeInterval:0]
У меня нет хорошего решения для iOS 8.1пока что, но продолжайте поиск и обновлю здесь.Экстренным обходным решением может быть создание строки даты с использованием средства форматирования, а затем создание даты из строки с тем же средством форматирования.
Редактировать: Это становится еще хуже:
NSString *date1String = [iso8601DateFormatter stringFromDate:date1];
date2 = [iso8601DateFormatter dateFromString:date1String];
(lldb) p date1
(NSDate *) $0 = 0xe41ba06fd0000000 2014-11-03 01:00:00 CET
(lldb) p date2
(NSDate *) $1 = 0xe41ba06fd0000000 2014-11-03 01:00:00 CET