我觉得我快疯了。
我正在制作一个小的命令行工具,让我知道我喜欢的Twitch频道何时上线。到目前为止,一切都正常。只有一个小问题:无论我在程序中的什么地方调用,[NSUserNotificationCenter defaultUserNotificationCenter]都会始终返回nil。这是一个小问题,因为我需要能够发送通知。
整整搜索了一个小时后,我搞不清到底是怎么回事。像[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:myDelegate]这样的东西不会崩溃,但我非常确定这是因为您可以在Obj-C中向nil发送消息。类似地,我可以执行类似于[[NSUserNotificationCenter defaultNotificationCenter] deliverNotification: mynote]的操作,但屏幕上没有显示任何内容(这是将[NSUserNotificationCenter defaultUserNotificationCenter]的委托设置为为userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)方法返回YES。)
此外,通过deliverNotification呈现的所有通知都不会将其delivered属性设置为YES。
我能想到的唯一一件事是,只有在运行NSApplication的情况下,NSUserNotificationCenter的用法才有效,但我在任何地方都找不到这方面的文档。我正在运行一个简单的命令行工具,它相当于一个main函数、一个@autoreleasepool和一些方法调用。
有没有什么明显的原因会导致[NSUserNotificationCenter defaultUserNotificationCenter]返回nil?
发布于 2014-06-28 16:09:29
我能想到的唯一一件事是,只有在运行NSApplication的情况下,NSUserNotificationCenter的用法才有效,但我在任何地方都找不到这方面的文档。
我不认为在某个地方找到它是很容易的,但是如果你的应用是一个简单的命令行工具,也就是说,它没有使用NSRunLoop,我怀疑像通知这样的功能根本不能工作。它们本质上要求你的程序有一个运行循环,该循环等待事件(例如,通知进来,点击,触摸),并将它们分派给任何应该处理它们的人。
您可能会尝试从主函数启动和NSRunLoop,但我想它将不再是一个简单的命令行工具。
https://stackoverflow.com/questions/24460372
复制相似问题