我觉得我要疯了。
我正在制作一个命令行工具,让我知道我喜欢的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
,但是我想它将不再是一个简单的命令行工具。