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!");
}
Там есть общая картина здесь, в том, что какао-классы, которые имеют методы делегата с помощью метода подписи, передает один параметр уведомления, такой как метод делегирования ‑(void)applicationDidFinishLaunching:(NSNotification*)notification
NSApplication
, также отправляет уведомление при вызове метода делегата.
Например, NSWindow
имеет много методов делегата с такого рода подписи, такие как:
- (void)windowDidResize:(NSNotification *)notification
Если посмотреть на the docs для этого метода, вы увидите, что уведомление, которое передается этот метод делегирования - NSWindowDidResizeNotification
. Затем вы можете найти более подробную информацию об этом уведомлении в notifications section документов NSWindow
.
Этот тип метода делегата часто используется, когда существует вероятность того, что более чем один объект будет интересоваться информацией делегата.
И в чем проблема с отправкой его сообщения или инициализации его в '-applicationDidFinishLaunching'? –
Поскольку все функции и код приложения находятся в другом файле. –
Сложно сказать, как это следует обрабатывать, не зная, по крайней мере, основную структуру/семантику класса, о котором вы говорите. Как вы обычно обращаетесь к нему? –