assign and unsafe_unretained is identical. iOS 4 or below uses unsafe_unretained.
weak, assign and unsafe_unretained properties do not retain value. However weak also nilled out when the object pointed by it is deallocated. So it prevents crash because of dangling pointers.
