在我的 setter 中,我正在复制一个传入字符串,以避免修改原始字符串时出现任何麻烦。
- (void)setName:(NSString *)newName{
if(name != newName) {
[name release];
name = [newName copy];
}
}
我的问题是:当我正在制作副本时,我应该在哪里发布它,或者我只是做一个自动发布?即
- (void)setName:(NSString *)newName{
if(name != newName) {
[name release];
name = [[newName copy] autorelease];
}
}
加里
最佳答案
当您进行复制
时,该对象将被保留。 这就是你想要的。如果你自动释放它,它最终会被释放。所以你的第一个例子是正确的。第二个将使您的应用程序崩溃。
如果您担心对象被释放时会发生什么,请记住您应该release
dealloc
方法中的所有引用。
关于objective-c - 在 setter 中哪里释放副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1500213/