0

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


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

问题:有没有办法让我做 _clientObjasNSDistantObject并保存所有消息,直到_clientObj被构造。

4

1 回答 1

0

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

看看这段代码作为一个可能的例子,说明如何创建一个 NSDistantObject 的子类来完成我上面描述的事情。

GTMTransientRootProxy.m , GTMTransientRootProxy.h

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

于 2011-06-04T18:07:11.807 回答