在 iOS 5 之前,我可以使用 == 运算符来检查 earlierDate 返回的日期:

if ([aDate earlierDate:bDate] == aDate)
    [someone doSomething];

但是现在,我必须这样做:
if ([[aDate earlierDate:bDate] isEqualToDate:aDate])
    [someone doSomething];

为什么会这样?

实际上,问题在于使用 == 进行比较与使用 isEqualToDate: 进行比较,而与 earlierDate: 调用无关。

最佳答案

您一直在使用指针比较 ( == ),现在您必须使用对象的比较方法。这意味着在较早版本的 iOS 中, earlierDate: 方法将返回您之前传入的对象。现在,它似乎创建了一个新对象(具有与较早日期相同的数据)并返回该对象。
isEqualToDate: 方法是首选,因为它更合适,并且不太可能像您的指针比较那样中断。

关于objective-c - iOS 5 中 NSDate 的 earlyDate 的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7860367/

10-11 14:51