2011-04-07 108 views
1

这个问题困惑了我很多。 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; 

回答

3

您不需要释放它,它是一个autorelease对象。通常你只发布你自己编辑的东西。

1
selectedData_c 

无需发布为dateByAddingTimeInterval方法将返回autorelease对象。

1

号“dateByAddingTimeInterval”不包含单词页头,复制,保存,或mutableCopy。因此,您不对该内存负责。这是一个客观的命名标准。

请注意,如果您希望数据在发布字符串后继续存在,则应复制它;通过合同,你对该记忆没有任何责任,但也不能保证它会超出赋予给你的对象的范围。

0

您不应该release它,它是autorelease'd。请阅读Apple发布的Memory Management Rules。他们有意义,他们让在iOS平台上的内存管理很容易。