Вообще говоря, вы бы настроить контроллер как функция окна delegate для того, чтобы получить эти уведомления, например, так:
// MyClass.m
- (void)awakeFromNib {
// note: this step can also be done in IB by dragging a connection
// from the window's "delegate" property to your `MyClass` object
[window setDelegate:self];
}
- (void)windowDidExpose:(NSNotification *)notification {
NSLog(@"test");
}
Хотя, после прочтения here и here, windowDidExpose
не может быть вашим лучшим выбором. Я бы порекомендовал вместо этого использовать метод делегата windowDidBecomeKey. Он публикуется всякий раз, когда ваше окно получает «фокус» (начинает отвечать на ввод пользователя), что может быть подходящим временем для отображения второго окна.
Update: (в ответ на комментарии)
документации компании Apple (цитируется ниже) указывает на то, что NSWindowDidExposeNotification
действительна только для nonretained окон, которые, в соответствии с должностями, которые я связывал выше, являются довольно редко ,
NSWindowDidExposeNotification
Добавлено всякий раз, когда часть объекта в nonretained NSWindow подвергается воздействию, будь предписывалось перед другими окнами или другими окнами удаляется из перед ним.
Объект уведомления является объектом NSWindow, который был выставлен. Словарь userInfo содержит ... прямоугольник, который был открыт.
На более высоком уровне, NSNotification
объекты просто пакеты данных, которые получают ходили между классами какао и NSNotificationCenter
объектами. NSNotificationCenter
Объекты - это контроллеры, которые управляют этими пакетами данных и отправляют их наблюдателям по мере необходимости. Обычно нет необходимости обманывать уведомления напрямую. Вы можете просто использовать KVC/KVO или предопределенные делегаты в своих классах, а Cocoa обрабатывает все грязные детали за кулисами.
См. Notification Programming Topics и Key Value Coding Programming Guide, если вы хотите узнать больше.
Ага, это хорошо работает, спасибо, я воспользуюсь этим. Но потом я думаю, что не понимаю, что такое NSWindowDidExposeNotification. – Jeena
Мой ответ был слишком длинным для комментария, поэтому я разместил его в своем ответе. Надеюсь, вам будет достаточно информации, чтобы вы начали! ':)' –
Спасибо, еще один вопрос;). Что они означают, что я «неназванный NSWindow»? Я не там, где удержание счета равно 0 или не так ли? – Jeena