static void registerForDriverLoadedNotification()
{
// Snipped code that works and is not related to issue
}
static void registerForApplicationChangedNotification()
{
NSLog(@"registerForApplicationChangedNotification!");
NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
[center addObserverForName: nil object: nil queue: nil
usingBlock: ^(NSNotification* notification) {
NSLog(@"NOTIFICATION %@ -> %@", notification.name,
notification.userInfo);
}];
}
int main (int argc, const char* argv[]) {
registerForDriverLoadedNotification();
registerForApplicationChangedNotification();
CFRunLoopRun();
return 0;
}
以上代码用于守护程序进程,它等待插入USB设备,然后加载配置。我想扩展此功能以检测应用程序何时启动,以及是否存在特定于应用程序的配置加载它。
但是,除了NSUserDefaultsDidChangeNotification
之外,我似乎没有收到任何通知。
registerForApplicationChangedNotification
中的上述代码最初是监视NSWorkspaceDidActivateApplicationNotification
和NSWorkspaceDidDeactivateApplicationNotification
,但我将其更改为catch-all,因此我可以看到正在发布的其他通知。
无论发生什么事情,似乎只收到NSUserDefaultsDidChangeNotification
通知......这个相当简单的代码出了什么问题?
答案 0 :(得分:0)
愚蠢的错误!
if (containerElement.contains(event.target) {
// event.target is a descendent of containerElement
}
应该是:
NSNotificationCenter* center = [NSNotificationCenter defaultCenter];