2010-08-01 4 views
1

J'ai une application Cocoa qui fonctionne bien, sauf qu'il n'appellera pas applicationDidFinishLauching sur mon délégué de l'application. applicationWillFinishLauching fonctionne bien.applicationDidFinishLauching jamais invoqué, WillFinishLauching ne

Dans IB J'ai défini le délégué de "Application" (et aussi propriétaire du fichier) à mon objet "XXX App Delegate". Toutes les autres méthodes spécifiques à l'application sont appelées correctement assez bizarrement.

Que pourrais-je faire de mal? Je ne sais pas où chercher plus

Mon code:

@interface NZBVortexAppDelegate : NSObject 
{ 
    NSWindow *window; 
    NZBqueue *connectionPool; 
    MainWindowViewController *mainWindowViewController; 
} 

@property (assign) IBOutlet NSWindow *window; 
@end 

fichier .m

@implementation NZBVortexAppDelegate 

@synthesize window; 

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    NSLog(@"Not invoked"); 
} 

- (void)applicationWillFinishLaunching:(NSNotification *)aNotification { 
     NSLog(@"Invoked"); 
} 

@end 

Pouvez-vous me donner quelques conseils? Je suis même sorti de WillFinishLauching (pas à pas) mais ne semble plus toucher aucun de mes codes, je ne peux pas déboguer davantage dans les frameworks.

+0

Essayez quelque chose de différent avec NSLog, de sorte que vous êtes absolument sûr de ne pas mélanger les deux messages Non invoqués. – neoneye

Répondre

0

J'ai eu la réponse, il semble que mon plist de préférences était un peu corrompu, causant que l'objet Sparkle SUUpdater ne finisse jamais de vérifier une mise à jour pendant le démarrage et bloque à son tour l'événement appelé. Il m'a fallu quelques heures pour comprendre car sparkle n'enregistre pas ce problème au moins.

J'ai contacté le développeur Sparkle pour ajouter un peu plus de vérification d'intégrité. Merci les gars!

2

Si vous créez une application Mac OS X, c'est en effet étrange. Si, d'autre part, vous travaillez sur une application iOS, cela est attendu car, pour une raison inconnue, Apple a légèrement modifié la méthode. Dans OS X votre méthode ci-dessus est exactement correcte pour iOS où vous avez NSNotification * dans applicationDidFinishLaunching: il devrait être UIApplication *. Je n'ai aucune idée pourquoi ils l'ont fait comme applicationWillFinishLaunching: est toujours un NSNotification.

+0

Même dans ce cas de Cocoa Touch, cependant, le message passerait toujours, puisque le sélecteur est le même; il n'aurait tout simplement pas le genre d'objet qu'il attend dans cette variable. –

Questions connexes