I have a situation where I’m keeping references to ivars which need to be persistent. In one object, I have an array of pointers to ivars in another object, which are used over the entire lifetime of the program. In other words, I’m not just passing a reference to retrieve a value — I’m keeping the pointers around.
Is this a valid? Is it possible that the ivars might move? Are there cases where objects instantiated objects are moved around at runtime unbeknownst to the program? Or, do objects stay exactly where they are created. If the later is the case, is there any reason not to use references the way I am?
I’m using ARC.
Note: This probably wasn’t a good way to design this to begin with, but… it’s all done and working 99%! (except for a nasty crash which reboots the entire phone… )
Objects and their instance variables don’t move once created. However, you also need to keep a strong reference to the object that holds the ivar. Otherwise, the object might be deallocated, leaving you with a dangling pointer.
Note that it is generally a very bad idea to have pointers to another object’s insntance variables.