An iphone app I’m working on is terminating periodically … and I have a feeling it is because of how I’m accessing a shared NSArray amongst several view controllers. So …
What is the best way to pass NSArray/NSMutableArray amongst several ViewControllers … all of which can modify and/or set it to nil or whatever?
Thanks
There are two approaches, generally speaking.
In the first approach, when you instantiate your next view controller, you could set an array property to “inherit” from the current (soon-to-be previous or parent) view controller:
In the second approach, you could create a
myAppDelegateArrayproperty in your application delegate, instantiating the array when the application initializes (or instantiated somewhere else, on demand).You can then call the getter for this property from any class — including view controllers.
For example, within an instance of
MyNextViewController, you might have a property calledmyViewControllerArrayand you would set it as follows:You would add a
#definestatement somewhere in your application constants file, e.g.:or use the full
[UIApplication sharedApplication].delegatecall, if you prefer.As a general approach, people seem to prefer the app delegate approach, as it decentralizes access to the desired property.
With this approach, if you rearrange your view controllers or insert new view controllers into your VC hierarchy, you wouldn’t need to debug child view controller properties inherited from parent view controllers, because a reference is always available from the app delegate.