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

因此,我认为制作一个“服务器”类型的第三个应用程序可以处理令牌并共享必需的资源。

然后,我搜索实现此目的的方法,然后找到“分布式对象”解决方案。

然后,我开始使用Internet上的几个示例来实现它,但是始终存在关于弃用或ATC的警告或错误…

有人可以给我一个最新的例子来实现这个吗?

编辑:

我需要做的确切是:


识别服务器上每个应用程序实例
应用程序向服务器发送“运行”请求,并在运行强制性流程之前等待令牌
服务器使用FIFO堆栈存储“运行”请求
服务器将令牌授予应用实例
应用程序将“进程结束”发送到服务器,该服务器将令牌提供给以下应用程序实例
等等
服务器还必须处理App断开连接


感谢您的帮助,

最佳答案

您可能要使用XPC服务而不是分布式对象。 XPC较新且沙盒友好(如果要通过App Store分发,则至关重要)。 Daemons and Services Programming Guide为您提供了XPC的概念概述,然后提供了一些概述。

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

任务本身将是XPC Service的实例。如果我的上述假设正确,那么您可能要对远程过程NSXPCConnection API实例使用calls between the login item app and its XPC service(最高级别的XPC API)。您将使用开发的协议为应用创建并保留一个NSXPCInterface实例。对于您运行的每个任务实例,您将使用该接口建立一个NSXPCConnection(在完成之前还将坚持使用每个实例)。

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

如果主应用程序是多用户或您打算与在另一台主机上运行的服务进行通信,则详细信息和方法会有所更改(更改为“登录项”或“启动守护程序/代理”等)。基于我认为您正在努力实现的目标。

我希望这有帮助。

10-08 00:00