需要帮助在可可中实现进程间通信



我开发了一个可可应用程序,现在我想运行它的几个实例(本地(。但是所有正在运行的应用程序实例都必须共享一些资源。

因此,我想制作一个"服务器"类型的第三个应用程序,可以处理令牌并共享强制性资源。

然后,我搜索一种方法来做到这一点,并找到"分布式对象"解决方案。

然后我开始使用互联网上的几个示例来实现它,但总是有关于弃用或 ATC 的警告或错误......

有人可以给我一个关于如何实现这一点的最新示例吗?

编辑:

我需要做的是:

  • 服务器上每个应用程序实例的标识
  • 应用向服务器发送"运行"请求,并在运行强制进程之前等待令牌
  • 服务器使用 FIFO 堆栈来存储"运行"请求
  • 服务器将令牌提供给应用实例
  • 应用
  • 向服务器发送"进程结束",服务器将令牌提供给以下应用实例等。
  • 服务器还必须处理应用程序断开连接

谢谢你的帮助,

您可能

希望使用XPC服务而不是分布式对象。XPC较且沙盒友好(如果您想通过App Store分发,则至关重要(。守护程序和服务编程指南为您提供了 XPC 的概念性概述,然后是一些概述。

但是,您需要决定如何最好地设计应用程序,因为您最了解自己的要求。查看设计守护程序和服务部分,了解总体设计的可能路由和最佳实践的概述。如果您的应用程序完全在用户空间中运行(不是"针对系统上的所有用户"(,如果要提供用于启动和管理任务的 UI,则可以使用"登录项"作为服务器应用程序。

任务本身将是 XPC 服务的实例。如果我上面的假设是正确的,您可能希望使用 NSXPCConnection API(最高级别的 XPC API(在登录项应用程序与其 XPC 服务实例之间进行远程过程调用。您将使用您开发的协议为您的应用程序创建并保留 NSXPCInterface 实例。对于您运行的每个任务实例,您将使用该界面来建立 NSXPCConnection(您还将保留每个任务实例,直到完成(。

服务的

侦听器实例将与服务的委托对象(您的设计(通信,以决定是否接受连接以及如何响应接口协议。建立连接后(上面的链接中概述了几个步骤(,您可以开始通过连接实例的-remoteObjectProxy(例如:[[myConnection remoteObjectProxy] makeARandomCatMemeWithImageAtURL:someURL];(向其发送协议定义的消息。该服务将向应用程序发送一些回复消息(通过调用应用程序的 -exportedObject 的方法,通过其连接提供(。

如果主应用程序是多用户,或者您打算与另一台主机上运行的服务进行通信,则详细信息和方法会有所变化("登录项"或"启动守护程序/代理"等(,但我是根据我认为您要实现的回复。

我希望这有所帮助。

最新更新