从未调用applicationDidFinishLauching,WillFinishLauching会这样做

时间:2010-08-01 19:48:41

标签: objective-c cocoa delegates interface-builder

我有一个Cocoa应用程序可以正常工作,除非它不会在我的app委托上调用applicationDidFinishLauching。 applicationWillFinishLauching确实有效。

在IB中,我已将代理从“Application”(以及File的所有者)设置为“XXX App Delegate”对象。所有其他特定于应用程序的方法都被正确调用。

我可能做错了什么;我不知道在哪里搜索

我的代码:

@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步入(一步一步),但似乎不再打我的任何代码,无法在框架内调试更多。

2 个答案:

答案 0 :(得分:2)

如果您正在构建Mac OS X应用程序,那么这确实很奇怪。另一方面,如果你正在开发一款iOS应用程序,那么预计这是因为一些未知的原因Apple会稍微改变一下这个方法。在OS X中,上面的方法对于iOS NSNotification * applicationDidFinishLaunching: UIApplication *应该是applicationWillFinishLaunching:的完全正确。我不知道为什么他们这样做,因为NSNotification仍然是{{1}}。

答案 1 :(得分:0)

我得到了答案,似乎我的偏好plist有点腐败导致Sparkle SUUpdater对象永远不会在启动期间完成检查更新,反过来阻止被调用的事件。花了几个小时才弄明白因为闪耀至少没有记录这个问题。

我已经联系了Sparkle开发人员,以增加更多的健全性检查。 谢谢你们!