我是否正确释放了物体?

时间:2011-04-07 11:29:01

标签: objective-c

这个问题困扰了我很多。 selectedDate也是NSDate的对象。 如果我删除mark1处的行,该项目将正常运行。 如果没有,这个项目将在我调用此方法后关闭。 问题出在哪儿? 非常感谢!

NSDate *selectedData_c = [self.selectedDate dateByAddingTimeInterval:60 * 60 * 8];
self.label = (UILabel *)[nibLoadedCell viewWithTag:1];
label.text = [NSString stringWithFormat:@"%@-%@-%@",[[selectedData_c description] substringWithRange:yearRange],[[selectedData_c description] substringWithRange:monthRange],[[selectedData_c description] substringWithRange:dayRange]];
[selectedData_c release];           // mark1
return cell;

4 个答案:

答案 0 :(得分:3)

您不需要释放它,它是autorelease对象。通常,您只会发布自己alloccopy编辑的内容。

答案 1 :(得分:1)

selectedData_c 

无需释放,因为dateByAddingTimeInterval方法将返回autorelease对象。

答案 2 :(得分:1)

没有。 “dateByAddingTimeInterval”不包含单词alloc,copy,retain或mutableCopy。因此,你不对那个记忆负责。这是一个客观的命名标准。

请注意,如果您希望在释放字符串后仍然保留该数据,则应复制它;根据合同,您不对该记忆负责,但您也不能保证它将超出提供给您的对象的范围。

答案 3 :(得分:0)

你不应该release它,它是autorelease'。请阅读Apple发布的Memory Management Rules。它们很有意义,它们可以很容易地在iOS平台上进行内存管理。