NSUserNotificationCenter

NSUserNotificationCenter

我觉得我要疯了。

我正在制作一个命令行工具,让我知道我喜欢的Twitch channel 何时上线。到目前为止,一切正常。只有一个小问题:无论我在程序中的什么位置,[NSUserNotificationCenter defaultUserNotificationCenter]始终返回nil。这有点问题,因为我需要能够发送通知。

经过一个小时的搜寻,我不知道发生了什么。像[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:myDelegate]这样的东西不会崩溃,但是我很确定那是因为您可以在Obj-C中将消息发送到nil。类似地,我可以做类似[[NSUserNotificationCenter defaultNotificationCenter] deliverNotification: mynote]的操作,但是屏幕上什么都没有显示(这与[NSUserNotificationCenter defaultUserNotificationCenter]的委托(delegate)设置为返回YES方法的userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)相同。)

此外,所有通过deliverNotification呈现的通知都没有将其delivered属性设置为YES。

我唯一能想到的是,NSUserNotificationCenter的用法仅在您运行NSApplication时有效,但我在任何地方都找不到该文档。我正在运行一个简单的命令行工具,该工具几乎是一个main函数,一个@autoreleasepool和一些方法调用。

有什么明显的可以导致[NSUserNotificationCenter defaultUserNotificationCenter]返回nil的东西吗?

最佳答案



我认为要在某个地方显式地记录它并不容易,但是如果您的应用是简单的命令行工具,即它没有使用NSRunLoop,我怀疑通知之类的功能是否可以正常工作。它们本质上要求您的程序具有一个运行循环,该循环位于该循环中等待事件(例如,传入的通知,单击,触摸)并将其分派(dispatch)给应该处理它们的任何人。

您可能会尝试从主函数启动NSRunLoop,但是我想它将不再是一个简单的命令行工具。

10-06 00:09