我的应用程序中有一个类处理所有控件,所有函数和变量都存储在其中。如何添加一个处理应用程序启动的函数?
所以基本上我需要在我的班级和应用程序代理中处理' applicationDidFinishLaunching '。
我该怎么做?
答案 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中找到有关此通知的更多详细信息。
当有可能多个对象对委托信息感兴趣时,通常会使用这种委托方法。