Kri*_*oks 2 macos cocoa objective-c
我的应用程序中有一个类处理所有控件,所有函数和变量都存储在其中.如何添加一个处理应用程序启动的函数?
所以基本上我需要在我的类和应用程序委托中处理' applicationDidFinishLaunching '.
我怎么做?
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.
当有可能多个对象对委托信息感兴趣时,通常会使用这种类型的委托方法.