在我的setter中,我有一个我正在复制的传入字符串,以避免在修改原始文件时出现任何问题.
- (void)setName:(NSString *)newName{
if(name != newName) {
[name release];
name = [newName copy];
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:因为我正在复制我应该在哪里发布它,或者我只是做自动释放?即
- (void)setName:(NSString *)newName{
if(name != newName) {
[name release];
name = [[newName copy] autorelease];
}
}
Run Code Online (Sandbox Code Playgroud)
加里
执行此操作时copy,将保留该对象.这就是你想要的.如果你自动发布它,它最终将被解除分配.所以你的第一个例子是正确的.第二个会崩溃您的应用程序.
如果您担心在释放对象时会发生什么,请记住您应该release在dealloc方法中引用任何引用.