代码之家  ›  专栏  ›  技术社区  ›  RonLugge

属性(保留)对象被释放而从未被标记为释放

  •  1
  • RonLugge  · 技术社区  · 14 年前

    我束手无策。我试着调试一个崩溃,最后我设法找到了它。我的'minutesLeft'变量不知怎么被释放了。

    问题是,我从来没有将它设置为release,而属性设置为retain。我搞不懂发生了什么事!

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

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

    问题是当我申报财产时。。。 @属性(非原子,保留)NSNumber*minutesLeft; 所以物业应该为我办理入住手续!

    该值是使用。。。

    minutesLeft=[NSNumber numberWithInt:row];
    

    还有。。。

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

    对于dealloc和viewDidUnload我有

    self.minutesLeft=nil;
    

    但既然我没有离开这里,那就不会有任何影响。

    有人有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  5
  •   Jakob Borg    14 年前

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

    self.minutesLeft = [NSNumber numberWithInt:row]
    

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

    self. )

    不过,在解除分配(设置)时,您的操作是正确的 self.minutesLeft = nil