【问题标题】:Property (retain) object being released without ever being flagged for release属性(保留)对象在没有被标记为释放的情况下被释放
【发布时间】:2011-04-08 21:59:57
【问题描述】:

我已经束手无策了。我正在尝试调试崩溃,最后我设法找到它。我的“minutesLeft”变量以某种方式被释放了。

问题是,我从未将其设置为释放,而该属性设置为保留。我不知道发生了什么!

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

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

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

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

该值是使用...设置的

minutesLeft=[NSNumber numberWithInt:row];

还有……

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

对于 dealloc 和 viewDidUnload 我有

self.minutesLeft=nil;

但由于我没有离开视图,因此这些应该不会影响任何事情。

有人有什么想法吗?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

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

    self.minutesLeft = [NSNumber numberWithInt:row]
    

    或

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

    (注意self.)

    但在解除分配时你做对了(设置self.minutesLeft = nil)。

    【讨论】:

    • 难道不是认为别人编写的代码就是正确的代码。我认为这两者是同义词:(
    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多