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].