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

Ron*_*gge 1 iphone objective-c

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

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

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

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

NSLog(@"MeterViewController minutesLeft %i", [minutesLeft intValue]);
Run Code Online (Sandbox Code Playgroud)

问题是当我声明属性... @property(nonatomic,retain)NSNumber*minutesLeft; 所以该物业应该为我处理保留!

使用...设置该值

minutesLeft=[NSNumber numberWithInt:row];
Run Code Online (Sandbox Code Playgroud)

和...

minutesLeft=[NSNumber numberWithInt:(((timeLeft)/60)%60)];
Run Code Online (Sandbox Code Playgroud)

对于dealloc和viewDidUnload,我有

self.minutesLeft=nil;
Run Code Online (Sandbox Code Playgroud)

但既然我不离开这个观点,那些不应该影响任何东西.

有人有主意吗?

Jak*_*org 5

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

self.minutesLeft = [NSNumber numberWithInt:row]
Run Code Online (Sandbox Code Playgroud)

要么

self.minutesLeft = [NSNumber numberWithInt:(((timeLeft)/60)%60)];
Run Code Online (Sandbox Code Playgroud)

(注意self.)

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