2010-08-01 37 views
1

我有一個可以正常工作的Cocoa應用程序,除了它不會在我的應用程序委託上調用applicationDidFinishLauching。 applicationWillFinishLauching雖然工作。applicationDidFinishLauching從未調用,WillFinishLauching確實

在IB中,我已將「應用程序」(也是文件的所有者)的委託設置爲我的「XXX應用程序委託」對象。所有其他特定於應用程序的方法都可以正確調用。

我可能做錯了什麼;我不知道在哪裏了搜索

我的代碼:

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

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

.m文件

@implementation NZBVortexAppDelegate 

@synthesize window; 

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

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

@end 

你能給我一些指點?我甚至走出了WillFinishLauching(一遍又一遍),但似乎沒有再打我的任何代碼,無法在框架內調試更多。

+0

嘗試輸出與NSLog不同的東西,以便確保您不會混淆兩個未調用的消息。 – neoneye 2010-08-01 20:38:03

回答

0

我得到了答案,似乎我的偏好plist有點損壞,導致Sparkle SUUpdater對象永遠不會在啓動過程中完成檢查更新並反過來阻止被調用的事件。花了我幾個小時才弄清楚,因爲閃光燈至少沒有記錄這個問題。

我已經聯繫Sparkle開發人員添加了一點更健康檢查。 謝謝你們!

2

如果您正在構建Mac OS X應用程序,那麼這確實很奇怪。另一方面,如果你正在開發iOS應用程序,那麼預計會出現某種未知原因,Apple會稍微改變方法。在OS X上,你的方法對於你有NSNotification *applicationDidFinishLaunching:的iOS來說應該是UIApplication *。我不知道他們爲什麼這樣做,因爲applicationWillFinishLaunching:仍然是NSNotification

+0

即使在Cocoa Touch的情況下,消息仍然會通過,因爲選擇器是一樣的;他只是不會有那種他期待在這個變量中的對象。 – 2010-08-01 20:29:48