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

标签 objective-c cocoa macos

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

所以基本上我需要在我的类以及应用程序委托(delegate)中处理“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!");
}

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

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

- (void)windowDidResize:(NSNotification *)notification

如果你看the docs对于此方法,您将看到传递给此委托(delegate)方法的通知是一个 NSWindowDidResizeNotification。然后,您可以在 notifications section 中找到有关此通知的更多详细信息。 NSWindow 文档。

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

关于objective-c - 在应用程序启动时执行某些操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891584/

相关文章:

iphone - 如何删除工具栏上 UIBarButtonItems 之间的默认可用空间?

ios - 为什么我不能让我的动画持续时间为 0 秒?我将如何正确地做到这一点?

macos - NSTextView:获取文本更改(插入和删除)

python - 如何访问特定于 Mac 的文件元数据?

macos - 在 Mac OS X 上以编程方式获取 sleep 时间(和其他节能器设置)

objective-c - Cocoa 类成员变量在函数调用内部分配 nil 除非强制初始化/加载

ios - 如何为 SKShapeNode 设置小于 1 的线宽?

c - C 中这两种 typedef 样式之间有什么区别?

cocoa - 如何在没有 Accessibility API 的情况下在 Mac OS 中获取另一个应用程序窗口的标题、位置和大小?

cocoa - 在用户默认设置中存储语音 - Cocoa