最も近いものはNSWindowWillCloseNotification
、ウィンドウが閉じる前にウィンドウによって投稿されたものです。親ウィンドウが閉じたときに子ウィンドウを閉じるには、おそらく次を使用できます。
NSWindow *parentWindow;
NSArray *childWindows;
NSNotificationCenter *noteCenter = [NSNotificationCenter defaultCenter];
for (NSWindow *childWindow in childWindows) {
[noteCenter
addObserver:childWindow selector:@selector(close)
name:NSWindowWillCloseNotification object:parentWindow];
}
子ウィンドウが親の前に割り当て解除される場合は、その前に必ず通知用に登録解除してください。
Mark が言及したデリゲート メソッドはデリゲートにとって便利なメソッドであり、デリゲートが必要とする可能性が高い通知に登録する手間を省きます。そのメッセージを受信するためだけにウィンドウ コントローラーを作成する必要はありません。ウィンドウ[window setDelegate:myObject]
を送信するだけで、メソッドに応答した場合にメッセージmyObject
が受信されます。-windowWillClose:
ところで、Cocoa が「子ウィンドウ」と呼ぶものは、皆さんが考えているものとは異なります。これらはWindow Programming Guideでは扱われていませんが、 の関連するメソッドのドキュメントをNSWindow
見ると、基本的に親ウィンドウの動きを追跡し、親ウィンドウと一緒に移動することがわかります。
Win32 プログラミングから Cocoa に移行する場合は、Apple のWindows Win32 API から Mac OS X への移植が Win32 と Cocoa の概念上の違いを強調するのに役立つことに気付くかもしれません。