Difference between retain & assign

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];  

}