NSNotification没有被调用超级

时间:2012-05-05 22:57:10

标签: objective-c cocoa

在课堂上我会做以下事情:

- (void)windowDidLoad
{
    [super windowDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(windowWillClose:) 
                                                 name:NSWindowWillCloseNotification 
                                               object:self.window];
}

- (void)windowWillClose:(NSNotification *)notification {
    NSLog(@"closing");
}

然后我将这个类子类化。只有一个问题。当我继承此类时,通知永远不会发送。有这个原因吗?

3 个答案:

答案 0 :(得分:2)

您的子类是否覆盖windowDidLoad和/或windowWillClose:?如果是这样,你的子类的实现是否会调用super

答案 1 :(得分:1)

您可能会遗漏某些内容,请检查

  1. 您是否已在子类上覆盖这些方法?

    - (void)windowDidLoad

    - (void)windowWillClose:(NSNotification *)notification

  2. 如果您在1.中编写了这样的代码吗?

    [super windowDidLoad];[super windowWillClose:param];

答案 2 :(得分:0)

1)在windowDidLoad或awakeFromNib

添加以下行
[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(windowWillClose:) name:NSWindowWillCloseNotification object:self.window];

2)选择窗口并导航到检查的属性,然后选中“关闭时释放”复选框。