复制NSDate(想要独立的对象)

Jef*_*eff 9 objective-c nsdate

NSDate符合NSCopying协议.根据NSCopying协议的文档:

a copy must be a functionally independent object with values identical
to the original at the time the copy was made.
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时:

NSDate *date1 = [NSDate date];
NSDate *date2 = [date1 copy];
NSLog(@"result: date1 0x%x  date2 0x%x", (int)date1, (int)date2);
// "result: date1 0x2facb0  date2 0x2facb0"
Run Code Online (Sandbox Code Playgroud)

这两个对象是相同的(相同的对象id).我错过了什么?如何将独立对象作为副本?

ham*_*ene 27

copy不保证不同的对象指针."功能独立"是指原始对象的变化不会反映在副本中,从而为不可变对象copy可以作为工作retain(我不如果这是保证,虽然,可能不知道).

试试date2 = [[NSDate alloc] initWithTimeInterval:0 sinceDate:date1].

  • 或者甚至:date2 = [date1 dateByAddingTimeInterval:0]; (5认同)