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

问题描述:

我在我的应用程序中有一个类来处理所有的控件,并且所有的函数和变量都存储在它中。我如何添加一个处理应用程序启动的函数?在应用程序启动时执行某些操作?

所以基本上我需要在我的课以及应用程序委托中处理'applicationDidFinishLaunching'。

我该怎么做?

+0

在'-applicationDidFinishLaunching'中发送消息或初始化消息时出现了什么问题? – 2010-05-23 12:20:59

+0

因为所有的应用程序功能和代码都位于不同的文件中。 – 2010-05-23 12:36:31

+0

很难说如何在不知道你所指的类的基本结构/语义的情况下如何处理它。你通常如何访问它? – 2010-05-23 12:51:11

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!"); 
} 

有一个通用的模式在这里,有一个方法签名的委托方法可可类,传递一个单独的通知参数,例如NSApplication‑(void)applicationDidFinishLaunching:(NSNotification*)notification委托方法,也会在委托方法被调用时发布通知。

例如,NSWindow有很多的委托方法具有这种特征的,如:

- (void)windowDidResize:(NSNotification *)notification 

如果你看一下the docs这种方法,你会看到,传递给通知此代表方法是NSWindowDidResizeNotification。然后,您可以在NSWindow文档的notifications section文档中找到有关此通知的更多详细信息。

这种类型的委托方法通常用于有多个对象可能对委托信息感兴趣的情况。

+0

除非您在applicationWillFinishLaunching:方法中添加观察者,否则这不起作用。其他地方为时已晚。 – erkanyildiz 2014-02-21 10:56:26