Obj-C Cocoa 通知 NSApplicationDidResignActiveNotification

2024-01-20

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

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

and then

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

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

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

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


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

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

- (void)init
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(applicationDidResignActive:)
                                                     name:NSApplicationDidResignActiveNotification
                                                   object:nil ];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Obj-C Cocoa 通知 NSApplicationDidResignActiveNotification 的相关文章

随机推荐