好的,这是一个基本的问题,但我问,因为我真的不明白如何正确管理这个。如果我取消注释最后两行,那么这段代码会崩溃,即使我认为它不应该。Memory/Obj-C正确的对象释放。哪些需要发布?
以下代码来自自定义的子类UILabel,其中我添加了以下方法setTextFromFloat。
-(void)setTextFromFloat:(float)newValue {
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode:NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:newValue]];
NSString *newLabelValue = [numberString stringByAppendingString:@"x"];
self.text = newLabelValue;
//[numberString release];
//[formatter release];
}
所以,这里有三个对象,我感到困惑:
一)self.text(旧的字符串值) - 当这种释放?当我调用这个函数时,我应该释放self.text的旧内容吗?
B)格式,我alloc'd这里NSNumberFormatter几乎肯定需要释放
三)怎么样numberString?我只是用它作为中介来构建newLabelValue。如果我释放它,我相信该程序崩溃,但为什么?我不负责通过调用stringFromNumber间接使用的内存?
非常感谢任何智慧,谢谢!
我强烈建议您从Build菜单中执行“Build and Analyze”。它将突出显示您正在释放/释放的内容。 – BarrettJ 2010-07-22 14:01:59