在 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/