0

考虑以下代码

NSManagedObject *o = ... ;

o.myProperty = [NSDate date];

NSDate *a = o.myProperty;
NSDate *b = o.myProperty;

BOOL identical = (a==b);
BOOL equal = [a isEqual:b];

在装有 iOS 5 的 iPhone 上运行它,identical = NO并且equal = YES

这是预期的行为吗?我会认为读取属性总是返回相同的对象,并且不会在每次调用 getter 时创建一个新对象。

或者这是iOS中的错误?

4

1 回答 1

0

好吧,如果您要比较对象,那么请始终使用 equalObjects: 而不仅仅是使用 == 比较运算符。顺便说一句,在这种情况下,您应该使用 compare: 方法来比较相同的日期。在您的上下文中,您应该像这样使用它,

[a compare:b] == NSOrderedSame // both the date are same, whatever the object br
于 2012-11-23T20:36:26.697 回答