Ближайший эквивалент, который вы найдете - это NSWindowWillCloseNotification
, опубликованный окном до его закрытия. Вероятно, вы можете заставить дочерние окна закрываться, когда родительское окно закрывается, используя:
NSWindow *parentWindow;
NSArray *childWindows;
NSNotificationCenter *noteCenter = [NSNotificationCenter defaultCenter];
for (NSWindow *childWindow in childWindows) {
[noteCenter
addObserver:childWindow selector:@selector(close)
name:NSWindowWillCloseNotification object:parentWindow];
}
Если дочернее окно будет освобождено до его родителя, обязательно отмените его регистрацию для уведомлений до того, как это произойдет.
Метод делегата, упомянутый Марком, является удобным методом для делегата, который избавляет его от необходимости регистрироваться для уведомления, которое они, вероятно, в любом случае захотят. Вам не нужно создавать оконный контроллер только для получения этого сообщения; просто отправка окна [window setDelegate:myObject]
заставит myObject
получить сообщение -windowWillClose:
, если оно ответит на метод.
Кстати, то, что Cocoa называет «дочерними окнами», отличается от того, о чем вы думаете. Они не рассматриваются в Руководстве по программированию окон , но если вы посмотрите документацию по связанным методам в NSWindow
, вы увидите, что они в основном отслеживают движения своего родительского окна, так что они двигаются вместе с ним.
Если вы приехали в Какао из-за программирования на Win32, вы можете найти, что Apple Портирует на Mac OS X из Windows Win32 API , чтобы подчеркнуть концептуальные различия между Win32 и Какао.