3

我有一个名为 AppController.h/m 的类,我想在发送 NSNotificationDidResignActiveNotification 时做一些事情。所以我在 AppController.m 中编写了这段代码:

-(void) initialize(){
    [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(applicationDidResignActive:)
                                                     name:NSApplicationDidResignActiveNotification
                                                   object:nil ];
}

接着

-(void) applicationDidResignActive (NSNotification*) note{
    NSBeep();
}

问题是该方法没有执行,我在控制台中得到了这个:

+[AppController applicationDidResignActive:]: unrecognized selector sent to class 0x61c4

我不知道问题出在哪里:你能帮帮我吗?
谢谢!

4

1 回答 1

3

initialize是类方法,不是实例方法。我不确定这一点,但似乎在类方法中使用选择器时,它还假设选择器将是类方法(有充分的理由)。AppController 有一个名为 的实例方法applicationDidResignActive,但没有这样命名的类方法。

而不是在 中注册通知+initialize,覆盖-init并在那里注册。

- (void)init
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(applicationDidResignActive:)
                                                     name:NSApplicationDidResignActiveNotification
                                                   object:nil ];
}
于 2011-03-02T21:09:25.920 回答