NSDate变成NSNumber MYSTERY

时间:2012-01-19 04:10:39

标签: ios nsdate

我在iOS 4.3& iOS 5具有自动引用计数功能。我在我的界面中声明了一个NSDate对象:

NSDate *fingerprintsDate;

后来,我设置了NSDate - 使用调试器并逐步执行它具有我期望的值:

fingerprintsDate = [NSDate date];

最后,我试着从约会时间开始:

if (fingerprintsDate == nil || [fingerprintsDate timeIntervalSinceNow] > 6)

这就是无法识别的选择器崩溃的地方:“2012-01-18 23:07:46.662 Netapporter [473:707] - [NSCFNumber timeIntervalSinceNow]:无法识别的选择器发送到实例0x194490”

根据调试器,亲爱的NSDate读取:“fingerprintsDate =(NSCFNumber *)0x194490 139” - 当我打印描述时,它读取:“{value = +139.0000000000,type = kCFNumberFloat32Type}”

我没有在代码中的任何其他地方做任何其他的指纹日期 - 但不知何故,它变成了一个NSNumer ......任何想法如何阻止它?

2 个答案:

答案 0 :(得分:0)

[NSDate date]返回一个非保留值(如果您正在使用arc,则返回弱值),因此很可能在该赋值和调用[fingerprintsDate timeIntervalSinceNow]之间释放。当您将其分配给保留(强)属性时,它将被保留。

答案 1 :(得分:0)

您是否使用GBD进行调试,使用GCC进行编译?可能与我的问题有关:-[NSDate timeIntervalSinceDate:] returns very small number on GCC 4.2, but works as expected on LLVM-GCC 4.2 on iOS4.3 Simulator