我有两个应用程序'A'和'B',需要做一些ipc。进程'A'如果尚未运行则启动进程'B'。在流程'A'中,我创建了NSConnection
和registerName:
。在进程'B'中,我通过调用rootProxyForConnectionWithRegisteredName:
获取远程对象。它将客户端对象指针设置为远程对象,以便Process'A'使用该对象来调用客户端对象方法。在流程“B”启动并建立连接之前,_clientObj
为零。我可能会收到针对_clientObj
的活动。
@interface Server : NSObject {
@private
id _clientObj;
}
问题:有没有办法让_clientObj
成为NSDistantObject
,并且它会保留所有消息,直到_clientObj
被构建。
答案 0 :(得分:0)
您请求的功能无法直接使用,但您可以创建NSDistantObject的子类,该子类捕获传入的方法调用并将它们放入队列,直到连接变为有效。一旦连接变得有效,它就可以出列并转发所有存储的方法调用。然后,任何进一步的方法调用都将被“实时”转发,可以这么说。
看看这段代码作为如何创建NSDistantObject的子类以执行上述操作的可能示例。
GTMTransientRootProxy.m, GTMTransientRootProxy.h
此代码在连接断开时以静默方式吞下NSDistantObject上的方法调用,但您可以将其扩展为在停机期间对方法调用进行排队。