string = [newString copy];
string = newString;
NSString * string ;
string = @"Your name";
Assign is for primitive values like BOOL, NSInteger or double. For objects use retain or copy, depending on if you want to keep a reference to the original object or make a copy of it.
In your setter method for the property, there is a simple assignment
of your instance variable to the new value,
This can cause problems since Objective-C objects use reference counting, and therefore by not retaining the object, there is a chance that the string could be deallocated whilst you are still using it.
this makes a copy of the string in your setter method: This is often
used with strings, since making a copy of the original object ensures
that it is not changed whilst you are using it.
this retains the new value in your setter method. For example: This
is safer, since you explicitly state that you want to maintain a
reference of the object, and you must release it before it will be