我在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 ......任何想法如何阻止它?
答案 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