您会发现最接近的等价物是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 的Porting to Mac OS X from Windows Win32 API有助于突出 Win32 和 Cocoa 之间的概念差异。