There isn't anything particularly complex about replacing an object reference with a new object, just as taking a nil
reference and making it valid when an object is first created.
If you are using ARC then the compiler will realise that the old reference has been replaced, just like it would in any other situation. If using MRR then you are required to observe the normal retain
/release
conventions in order to avoid a memory leak.