创建NSDistantObject

时间:2011-04-13 10:48:03

标签: cocoa ipc nsconnection

我有两个应用程序'A'和'B',需要做一些ipc。进程'A'如果尚未运行则启动进程'B'。在流程'A'中,我创建了NSConnectionregisterName:。在进程'B'中,我通过调用rootProxyForConnectionWithRegisteredName:获取远程对象。它将客户端对象指针设置为远程对象,以便Process'A'使用该对象来调用客户端对象方法。在流程“B”启动并建立连接之前,_clientObj为零。我可能会收到针对_clientObj的活动。


@interface Server : NSObject {
    @private
    id _clientObj;
}

问题:有没有办法让_clientObj成为NSDistantObject,并且它会保留所有消息,直到_clientObj被构建。

1 个答案:

答案 0 :(得分:0)

您请求的功能无法直接使用,但您可以创建NSDistantObject的子类,该子类捕获传入的方法调用并将它们放入队列,直到连接变为有效。一旦连接变得有效,它就可以出列并转发所有存储的方法调用。然后,任何进一步的方法调用都将被“实时”转发,可以这么说。

看看这段代码作为如何创建NSDistantObject的子类以执行上述操作的可能示例。

GTMTransientRootProxy.mGTMTransientRootProxy.h

此代码在连接断开时以静默方式吞下NSDistantObject上的方法调用,但您可以将其扩展为在停机期间对方法调用进行排队。