这是否正确返回日期重新进行内存管理?
我在这里的假设是我想将日期返回给来电者,但我不希望来电者能够更改日期并影响方法的日期,因此我以为我会回复一份。
所以我的方法中的代码是:
- (NSDate*)dateForMyTest {
return [[self.endDate copy] autorelease];
}
我假设我必须自动发布它,因此调用者不必这样做,因为他们自己也不会调用init / copy /等。
答案 0 :(得分:2)
就你而言,你是对的。但请注意,NSDate是不可变的,所以没有理由不返回self.endDate
。
答案 1 :(得分:2)
它可能有效,但不需要创建副本。 NSDate
为immutable,以后无法修改。
这应该足够......
- (NSDate*)dateForMyTest {
return self.endDate;
}
答案 2 :(得分:0)
是的,这是正确的。因为方法名称不包括init / copy / new,所以应该自动释放。
答案 3 :(得分:0)
如果应用程序使用的是nsoperations / threads等,则可能需要复制自动释放。但是您可能已经更安全 - 或者不是:当您使用时
return self.endDate
可能会发生任何事情,具体取决于财产的设置方式。是吗
@property (retain) endDate;
,或更常见,更快,更少线程安全
@property (nonatomic, retain) endDate;
它和你一样复杂!
What's the difference between the atomic and nonatomic attributes?