Puisque votre délégué d'application ne change jamais vraiment, vous pouvez créer un externe que vous définissez dans le code du délégué d'application, de manière très similaire à la fonction NSApp
externe pour les applications Cocoa de Mac OS X.
Définissez donc l'élément externe dans l'en-tête de votre AppDelegate (ou quelque chose d'autre que vous incluriez partout) :
extern AppDelegate* appDelegate;
Créez-la ensuite et définissez-la dans votre fichier de mise en œuvre :
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;
}
Les autres classes peuvent alors y accéder :
#import "AppDelegate.h"
// later
- (void)doSomethingGreat
{
NSDictionary* mySettings = [appDelegate settings];
if( [[mySettings objectForKey:@"stupidOptionSet"] boolValue] ) {
// do something stupid
}
}