Cocoa OSX中应用程序之间的NSX通知

Cocoa OSX中应用程序之间的NSX通知,cocoa,pyobjc,nsnotification,Cocoa,Pyobjc,Nsnotification,我有一个可以工作的应用程序,当用户按下窗口中的按钮时(使用PyObjC的Xcode),它会向自己发送NSNotification: (一个细节:签名可能并不完全正确,但确实有效) 让它继续运行。现在我想知道如何从另一个应用程序向此应用程序发送相同的通知,例如: // gcc tell.m -o test -framework Foundation #import <Foundation/Foundation.h> int main() { NSNotificationCen

我有一个可以工作的应用程序,当用户按下窗口中的按钮时(使用PyObjC的Xcode),它会向自己发送NSNotification:

(一个细节:签名可能并不完全正确,但确实有效)

让它继续运行。现在我想知道如何从另一个应用程序向此应用程序发送相同的通知,例如:

// gcc tell.m -o test -framework Foundation
#import <Foundation/Foundation.h>

int main() {
    NSNotificationCenter *nc;
    nc = [NSNotificationCenter defaultCenter];
    [nc postNotificationName:@"love_note"
                      object:nil
                    userInfo:nil ];
    return 0;
}
<代码> /GCC告诉MO测试框架基础 #进口 int main(){ NSNotificationCenter*nc; nc=[NSNotificationCenter defaultCenter]; [nc postNotificationName:@“爱情笔记” 对象:无 用户信息:无]; 返回0; } 我注意到,如果我在第一个应用程序中取消对该行的评论,那么我会收到很多其他通知,但它们都来自与我的应用程序相关的事件。我从来没有听到外面有什么动静。如何在进程之间发送通知?然后,有没有办法从命令行发送通知?谢谢


更新:只需替换上面的NSDistributedNotificationCenter,示例就可以了。

我认为没有办法使用NSNotificationCenter在两个应用程序之间进行通信。我以前从未使用过它,但我相信两个应用程序之间的通信对我来说更像是一项工作

从苹果的文档中:

每个进程都有一个默认值 您访问的通知中心 与NSNotificationCenter合作 +defaultCenter类方法。此通知中心处理 单个进程中的通知。 用于上的进程之间的通信 同一台机器,使用分布式 通知中心(请参阅 “NSDistributedNotificationCenter”)

编辑


它似乎也可以做你想做的事情,而不深入分布式对象。

我不相信有一种方法可以使用NSNotificationCenter在两个应用程序之间进行通信。我以前从未使用过它,但我相信两个应用程序之间的通信对我来说更像是一项工作

从苹果的文档中:

每个进程都有一个默认值 您访问的通知中心 与NSNotificationCenter合作 +defaultCenter类方法。此通知中心处理 单个进程中的通知。 用于上的进程之间的通信 同一台机器,使用分布式 通知中心(请参阅 “NSDistributedNotificationCenter”)

编辑


它似乎也可以做您想要做的事情,而不必深入分布式对象。

谢谢。我没有意识到这两种中心之间的区别。这实际上取决于通知的类型。例如,iTunes在开始/停止播放歌曲时会发送通知。您可以编写一个侦听这些通知的应用程序。如果您的目标是拥有一个远程设备,那么某种直接通信(例如通过分布式对象)更合适。+1用于分布式通知。它们不安全,但对于基本通信来说,它们非常简单。请注意NSDistributedNotificationCenter文档中的警告:“发布分布式通知是一项昂贵的操作。通知被发送到一个系统范围的服务器,该服务器将通知分发给所有注册了分布式通知对象的任务。发布通知和通知到达另一个任务之间的延迟是无限的。事实上,当发布了太多通知且服务器队列已满时,通知可能会被丢弃“。一般来说,将其用于应用程序运行所依赖的消息是不安全的。谢谢。我没有意识到这两种中心之间的区别。这实际上取决于通知的类型。例如,iTunes在开始/停止播放歌曲时会发送通知。您可以编写一个侦听这些通知的应用程序。如果您的目标是拥有一个远程设备,那么某种直接通信(例如通过分布式对象)更合适。+1用于分布式通知。它们不安全,但对于基本通信来说,它们非常简单。请注意NSDistributedNotificationCenter文档中的警告:“发布分布式通知是一项昂贵的操作。通知被发送到一个系统范围的服务器,该服务器将通知分发给所有注册了分布式通知对象的任务。发布通知和通知到达另一个任务之间的延迟是无限的。事实上,当发布了太多通知且服务器队列已满时,通知可能会被丢弃”。一般来说,将其用于应用程序赖以工作的消息是不安全的。
// gcc tell.m -o test -framework Foundation
#import <Foundation/Foundation.h>

int main() {
    NSNotificationCenter *nc;
    nc = [NSNotificationCenter defaultCenter];
    [nc postNotificationName:@"love_note"
                      object:nil
                    userInfo:nil ];
    return 0;
}