I’m trying to learn Objective C. I came across the following code which the compiler generates behind the scenes for @property(nonatomic, retain) NSString* myField
-(NSString*) myField
{
return myField_; //assuming myField_ is the name of the field.
}
-(void) setMyField:(NSString*) newValue
{
if(newValue != myField_)
{
[myField_ release];
myField_ = [newValue retain];
}
}
Now my question is; Why to call retain on newValue? Instead the following syntax should be used:
myField_ = newValue;
[myField_ retain];
Please advise why the above syntax is not used because as per my understanding, we want to retain the object pointed to by myField_ ?
They’re the same (both are correct). You don’t copy the object – retain returns the same pointer that was retained, so it’s shorter and cleaner to write
than separately assigning and retaining the object.