我的代码看起来像这样:
NSDate *currDate;
if(someCondition) {
currDate = [NSDate date];
}
//do some work
//calculate num of milli seconds passed since currDate was updated
if([currDate timeIntervalSinceNow] > MAX_MILLI_SECS) {
//do something
}
所以我在这里有两个问题
currDate
的代码路径,如果我在未经timeIntervalSinceNow
阻止的情况下调用if(someCondition)
会怎样?答案 0 :(得分:3)
来自docs for -timeIntervalSinceNow
:
如果日期对象早于当前日期和时间,则此属性的值为负。
如果代码是在启用ARC的情况下构建的,则strtol
保证初始化为currDate
。如果未采用将其设置为其他内容的分支,则在调用nil
时它仍为nil
。到[currDate timeIntervalSinceNow]
的消息将返回消息类型的相应零值。因此,nil
的计算结果为0。
如果代码未使用ARC构建,那么[currDate timeIntervalSinceNow]
将是未初始化的垃圾,结果未定义。
答案 1 :(得分:-1)
如果它是一个零值,则timeIntervalSinceNow返回一个NaN