Below is a code snippet from a book. Why can serialNumber still be set to new value after [serialNumber release];?
- (void)setSerialNumber:(NSString *)newSerialNumber
{
NSString *newValue;
// Is it a mutable string?
if ([newSerialNumber isKindOfClass:[NSMutableString class]])
// I need to copy it
newValue = [newSerialNumber copy];
else
// It is sufficient to retain it
newValue = [newSerialNumber retain];
[serialNumber release];
serialNumber = newValue;
}
The release message decrement the retainCount by 1. It’s just like calling any other function.
When you assign a pointer variable a new value you are relocating the pointer (not the object you just used in the previous statement) to a different object.