Ios timeIntervalSinceNow用于获取时间流逝值
我的代码如下所示:Ios timeIntervalSinceNow用于获取时间流逝值,ios,objective-c,nsdate,nstimeinterval,Ios,Objective C,Nsdate,Nstimeinterval,我的代码如下所示: 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
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)
块,会发生什么currDate
初始化为nil
。如果未执行将其设置为其他值的分支,则在调用[currDate timeIntervalSinceNow]
时,该分支将保持为nil
。发送至nil的消息返回消息类型的相应零值。因此,[currDate timeIntervalSinceNow]
的计算结果为0
如果代码未在启用ARC的情况下生成,则currDate
将是未初始化的垃圾,并且结果未定义。来自:
如果日期对象早于当前日期和时间,则此属性的值为负值
如果代码是在启用ARC的情况下生成的,则保证将currDate
初始化为nil
。如果未执行将其设置为其他值的分支,则在调用[currDate timeIntervalSinceNow]
时,该分支将保持为nil
。发送至nil的消息返回消息类型的相应零值。因此,[currDate timeIntervalSinceNow]
的计算结果为0
如果代码不是在启用ARC的情况下生成的,则currDate
将是未初始化的垃圾,并且结果未定义。如果执行TimeIntervalsInnow时为空值,则返回NaN如果执行TimeIntervalsInnow时为空值,则返回NaN感谢您的解释。对我来说,这有点让人困惑,我假设一个nil
日期会被解释为1970年1月1日。谢谢你的解释。但对我来说,这有点令人困惑,我假设nil
日期将被解释为1970年1月1日。