应用程序启动时执行某些操作?

时间:2010-05-23 11:52:55

标签: objective-c cocoa macos

我的应用程序中有一个类处理所有控件,所有函数和变量都存储在其中。如何添加一个处理应用程序启动的函数?

所以基本上我需要在我的班级和应用程序代理中处理' applicationDidFinishLaunching '。

我该怎么做?

1 个答案:

答案 0 :(得分:5)

NSApplication发送NSApplicationDidFinishLaunchingNotification通知,因此您应该只能在班级注册:

- (void)awakeFromNib
{
    NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
    [nc addObserver:self
           selector:@selector(appDidLaunch:)
               name:NSApplicationDidFinishLaunchingNotification 
             object:nil];
}

- (void)appDidLaunch:(NSNotification*)notification
{
    NSLog(@"Blast off!");
}

这里有一个通用模式,因为Cocoa类具有传递单个通知参数的方法签名的委托方法,例如‑(void)applicationDidFinishLaunching:(NSNotification*)notification的{​​{1}}委托方法,也会发布通知调用委托方法时。

例如,NSApplication有很多具有此类签名的委托方法,例如:

NSWindow

如果您查看此方法的the docs,您会看到传递给此委托方法的通知是- (void)windowDidResize:(NSNotification *)notification 。然后,您可以在NSWindowDidResizeNotification文档的notifications section中找到有关此通知的更多详细信息。

当有可能多个对象对委托信息感兴趣时,通常会使用这种委托方法。