我在iOS 4.3和iOS 5中使用自动引用计数.我在我的界面中声明了一个NSDate对象:
NSDate *fingerprintsDate;
Run Code Online (Sandbox Code Playgroud)
后来,我设置了NSDate - 使用调试器并逐步执行它具有我期望的值:
fingerprintsDate = [NSDate date];
Run Code Online (Sandbox Code Playgroud)
最后,我试着从日期算起来:
if (fingerprintsDate == nil || [fingerprintsDate timeIntervalSinceNow] > 6)
Run Code Online (Sandbox Code Playgroud)
这就是它与无法识别的选择器崩溃的地方:"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
[NSDate date] 返回一个非保留值(如果您使用 arc,则为弱值),因此它很可能在该赋值和调用 [fingerprintsDate timeIntervalSinceNow] 之间的某个位置被释放。当您将其分配给保留(强)属性时,它就会被保留。
归档时间: |
|
查看次数: |
585 次 |
最近记录: |