属性(保留)对象被释放而没有被标记为发布

时间:2010-09-06 20:05:22

标签: iphone objective-c

我的智慧结束了。我正在尝试调试崩溃,最后我设法跟踪它。我的'minutesLeft'变量以某种方式被释放。

问题是,我从未将其设置为发布,并且该属性设置为保留。我无法弄清楚发生了什么!

使用zombie变量,我收到以下消息:     *** - [CFNumber intValue]:发送到解除分配的实例0x728fdd0的消息

并将其跟踪到以下代码行:

NSLog(@"MeterViewController minutesLeft %i", [minutesLeft intValue]);

问题是当我申报财产时......     @property(非原子,保留)NSNumber * minutesLeft; 所以财产应该为我处理保留!

使用...

设置该值
minutesLeft=[NSNumber numberWithInt:row];

和...

minutesLeft=[NSNumber numberWithInt:(((timeLeft)/60)%60)];

对于dealloc和viewDidUnload我有

self.minutesLeft=nil;

但是因为我不会离开这个观点,所以这些不应该影响任何事情。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您正在设置作为属性支持的局部变量,而不是属性本身。因此它不会被保留。尝试:

self.minutesLeft = [NSNumber numberWithInt:row]

self.minutesLeft = [NSNumber numberWithInt:(((timeLeft)/60)%60)];

(注意self.

在解除分配时,您正在正确执行此操作(设置self.minutesLeft = nil)。