问题描述
我想实现某种配置管理器守护进程,它也用作以下接口 registerConfigProtocol 的 xpcService
。
@protocol registerConfigProtocol
-(void) registerConfigWithHandler:(id<setConfigureProtocol>)handler;
@end
协议方法的处理程序参数应该是一个实现setConfigureProtocol
的代理类,它将在xpc客户端中实现,接口如下:
@protocol setConfigureProtocol
-(void)setConfig:(Nsstring *)filePath withReply:(void (^)(NSError *error)) reply;
@end
当配置管理器决定新的配置文件可供客户端使用时,它会发起对上面setConfig
的远程调用,这是处理程序实例中的一个方法。
该调用预计将在客户端运行,客户端是此新配置的使用者)。
所以我的目标是将 (id<setConfigureProtocol>)handler
变成一个代理对象,我可以在新配置的异步事件上使用它。
我阅读了以下 API:
- (void)setInterface:(NSxpcInterface *)ifc
forSelector:(SEL)sel
argumentIndex:(NSUInteger)arg
ofReply:(BOOL)ofReply;
所以我在服务器 xpc 端做了这样的事情。根据我的理解,它应该是协议 registerConfigWithHandler
中方法 configSetDelegateInterface
的第一个参数,它是处理程序,一个代理对象。
NSxpcInterface *configRegisterInterface =
[NSxpcInterface interfaceWithProtocol:@protocol(configRegisterProtocol)];
NSxpcInterface *configSetDelegateInterface =
[NSxpcInterface interfaceWithProtocol:@protocol(setConfigureProtocol)];
[configRegisterInterface setInterface:configSetDelegateInterface
forSelector:@selector(registerConfigWithHandler:)
argumentIndex:0
ofReply:NO];
所以现在我可以简单地从服务器端调用处理程序方法,以便在每次可用时触发客户端重新加载新配置?只要我希望服务器发起对客户端的调用,我就不应从 registerConfigWithHandler
返回吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)