I’m looking to be able to reference certain state/objects through anywhere in my application. For instance, a user logs in to their application, I need to call a web service and retrieve the users information. Then I want to be able to access this information from anywhere in the application with something like the following:
myAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; user = delegate.u;
Is setting an instance variable as a User object in the app delegate and referencing it from there when needed a poor way of going about it? I typically set it there upon the user’s login.
Wanted to hear how the pros handle this one.
Normally, you should only connect things to the app delegate if they:
For everything else, you should create a singleton which manages access to them.
Jason Coco suggested routing through the Application Controller. In my programs I normally avoid this, as I think it puts too much responsibility at the top level — I think things should self-manage where possible and that higher level management should only be used when there is a requirement for coordination between peer-level modules.
I’m not going link my own blog but if you Google me and singletons you’ll probably find a post I wrote going into more detail.