OS X上CPDistributedMessagingCenter的替代方案?

时间:2013-04-24 14:55:02

标签: objective-c macos interprocess

我想要这样的事情:http://iphonedevwiki.net/index.php/CPDistributedMessagingCenter

在进程间同步发送和接收一些NSString

但CPDistributedMessagingCenter仅适用于iOS。

有人可以给我建议怎么做吗?谢谢! ;)

2 个答案:

答案 0 :(得分:0)

您考虑过NSDistributedNotificationCenter吗?

我建议创建一个DistributedNotificationCenter(服务器)来监听NotificationCenter发送的通知。它应该简单地将任何收到的消息(或任何已注册的兴趣)转发给对等DistributedNotificationCenters(在其他进程中运行)。

问题是这些DistributedNotificationCenters"如何找到"彼此。嗯,有很多选择:

  1. 一个众所周知的DistributedNotificationCenterLocator服务(服务器),它将它们连接起来,甚至可能是所有消息传递的中央中继点(但是它具有可扩展性问题)。
  2. 作为(1)但您使用DistributedNotificationCenterLocator的服务器端口初始化您的应用程序。
  3. DistributedNotificationCenter可以在数据库中注册,如果它是特定于应用程序的 - 即我在" server:port"。即一个众所周知的查找。
  4. 我不知道这一点,但请参阅this SO answer与使用Bonjour进行服务器发现有关。听起来很有意思?
  5. 我在这里没有提供任何代码,但如果您需要任何指示,请告诉我......

答案 1 :(得分:0)

我找到了一个非常好的指南。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DistrObjects/DistrObjects.html#//apple_ref/doc/uid/10000102-SW1

在这里,我分享我的片段:

服务器:

[NSConnection serviceConnectionWithName:@"your.connection.name" rootObject:self];

客户端:

[[NSConnection rootProxyForConnectionWithRegisteredName:@"your.connection.name" host:nil]performSelector:@selector(a_selector_that_server_object_respond_and_return_value)];