NSDate在iOS 5中的早期日期问题

rah*_*eel 4 objective-c ios5

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

if ([aDate earlierDate:bDate] == aDate)
    [someone doSomething];
Run Code Online (Sandbox Code Playgroud)

但现在,我必须这样做:

if ([[aDate earlierDate:bDate] isEqualToDate:aDate])
    [someone doSomething];
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

实际上,问题在于使用==比较与使用isEqualToDate:,而不是与earlierDate:呼叫有关.

Caj*_*uke 6

你一直在使用指针比较(==),现在你必须使用对象的比较方法.这意味着在早期版本的iOS中,该earlierDate:方法将返回您之前传递的对象.现在,它似乎创建了一个新对象(与早期日期具有相同的数据)并返回该对象.

isEqualToDate:方法是首选,因为它更合适,并且不像指针比较那样破坏.