Поскольку ваш делегат приложения никогда не изменяется, вы можете создать внешнее устройство, которое вы определяете в коде делегата приложения, очень похожее на внешнее NSApp
для приложений Mac OS X Cocoa.
Итак, определите внешнее в своем заголовке AppDelegate (или что-то еще, что вы бы включили везде):
extern AppDelegate* appDelegate;
Затем создайте его и установите в файле реализации:
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;
}
Тогда другие классы могут просто получить к нему доступ:
#import "AppDelegate.h"
// later
- (void)doSomethingGreat
{
NSDictionary* mySettings = [appDelegate settings];
if( [[mySettings objectForKey:@"stupidOptionSet"] boolValue] ) {
// do something stupid
}
}