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

Kri*_*oks 2 macos cocoa objective-c

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

所以基本上我需要在我的类和应用程序委托中处理' applicationDidFinishLaunching '.

我怎么做?

Rob*_*ger 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!");
}
Run Code Online (Sandbox Code Playgroud)

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

例如,NSWindow有很多带有这种签名的委托方法,例如:

- (void)windowDidResize:(NSNotification *)notification
Run Code Online (Sandbox Code Playgroud)

如果查看此方法的文档,您将看到传递给此委托方法的通知是a NSWindowDidResizeNotification.然后,您可以在文档的通知部分中找到有关此通知的更多详细信息NSWindow.

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