这里的初学者问题:
我试图了解一些基本的内存管理。如果我要重写一个 setter 方法,以下是否足以处理传入字符串的内存管理?
- (void)setMyString:(NSString *)string
{
if (_myString != string){
[string retain];
[_myString release];
_myString = string;
}
}
我的逻辑是,一旦我们进入那个 if 语句,我想获得传入字符串的所有权,因此保留。接下来我释放 _myString 对象。然后我将 _myString 对象设置为字符串对象。这是我困惑的根源:此时我是否需要保留 myString 对象?还是由于将其设置为等于字符串对象,我已经拥有它的所有权?
谢谢!