Assign creates a reference from one object to another without increasing the source's retain count.
if (_variable != object)
{
[_variable release];
_variable = nil;
_variable = object;
}
Retain creates a reference from one object to another and increases the retain count of the source object.
if (_variable != object)
{ [_variable release];
_variable = nil;
_variable = [object retain];
}