在我的 NSApp 委托中,我添加了一个对象的观察者,该对象是一个 NSWindow 子类,它在委托本身中启动,并在单击窗口后发布通知。选择器也在委托中。从同一个委托类中,我启动了另一个对象,该对象在启动时将自身添加为上面相同 NSWindow 子类的另一个窗口的观察者,并且选择器也在这个新启动的类中。两个通知都已发布,但问题是它们在两个班级中都发布了……这正常吗?我希望它只发布一次。
@implementation AppController
- (id)init
{
if (self = [super init])
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(toggleTestWindow:) name: @"TestNotification" object: testWindow];
return self;
}
- (void)toggleTestWindow: (NSNotification *)aNotification
{
if (!testWindow) {
testWindow = [[MyWindow alloc] init];
[mainWindow addChildWindow: testWindow ordered: NSWindowAbove];
} else {
[mainWindow removeChildWindow: testWindow];
[testWindow orderOut: self];
[testWindow release];
testWindow = nil;
}
}
@end