Since your app delegate never really changes, you can create an external that you define in the app delegate code, very similar to the NSApp
external for Mac OS X Cocoa applications.
So, define the external in your AppDelegate header (or something else that you would include everywhere):
extern AppDelegate* appDelegate;
Then create it and set it in your implementation file:
AppDelegate* appDelegate = nil;
// later -- i can't recall the actual method name, but you get the idea
- (BOOL)applicationDidFinishLaunchingWithOptions:(NSDictionary*)options
{
appDelegate = self;
// do other stuff
return YES;
}
Then other classes can just access it:
#import "AppDelegate.h"
// later
- (void)doSomethingGreat
{
NSDictionary* mySettings = [appDelegate settings];
if( [[mySettings objectForKey:@"stupidOptionSet"] boolValue] ) {
// do something stupid
}
}