Comme votre délégué d'application ne change jamais vraiment, vous pouvez créer un externe que vous définissez dans le code de délégué d'application, très similaire à l'NSApp
external pour les applications Mac OS X Cocoa.
Ainsi, définir l'extérieur dans votre tête de AppDelegate (ou quelque chose d'autre que vous devez inclure partout):
extern AppDelegate* appDelegate;
Ensuite, créez et mettez-le dans votre dossier 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;
}
Ensuite, d'autres classes peuvent simplement y accéder:
#import "AppDelegate.h"
// later
- (void)doSomethingGreat
{
NSDictionary* mySettings = [appDelegate settings];
if([[mySettings objectForKey:@"stupidOptionSet"] boolValue]) {
// do something stupid
}
}
importer votre AppDelege dans votre fichier pch. En faisant cela, vous n'avez pas besoin d'importer dans chaque fichier et vous pouvez obtenir cette macro n'importe où dans votre projet. – Ans
Notez que si vous vous trouvez en train de taper 'AppDelegate * d = [[UIApplication sharedApplication] delegate];' encore et encore, cela pourrait être une odeur de code. Avez-vous vraiment besoin du délégué de l'application pour les choses app-delegate-ish, ou l'utilisez-vous comme un dépotoir pour l'état global? –