首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSXPCConnection调试中断/失效

NSXPCConnection调试中断/失效
EN

Stack Overflow用户
提问于 2017-11-21 17:16:58
回答 1查看 2.4K关注 0票数 4

我在XCode 9,OSX而不是iOS,目标-C。

我有一个XPC服务可以与其他应用程序交谈。XPC服务对我来说是全新的。我已经阅读了我找到的文档和文章--但我仍然需要一些帮助。

代码语言:javascript
复制
// NSXPC Connection stored as ivar
self.bridgeagent = [[NSXPCConnection alloc] initWithServiceName:@"com.myid.myapp.bridgeagent"];
self.bridgeagent.remoteObjectInterface = [NSXPCInterface interfaceWithProtocol:@protocol(bridgeagentProtocol)];
self.bridgeagent.exportedInterface = [NSXPCInterface interfaceWithProtocol:@protocol(bridgeagentProxyProtocol)];
self.bridgeagent.exportedObject = self;

[self.bridgeagent setInvalidationHandler:^{
    NSLog(@"Bridgeagent invalidation handler!");
}];

[self.bridgeagent setInterruptionHandler:^{
    NSLog(@"Bridgeagent interruption handler!");
}];

[self.bridgeagent resume];

该处的名称如下:

代码语言:javascript
复制
// openFile method is listed in corresponding protocol
[[self.bridgeagent remoteObjectProxyWithErrorHandler:^(NSError * _Nonnull error) {
NSLog(@"bridgeagent.openFile errorHandler: %@",error);
}] openFile:parameters withReply:^(NSDictionary *returnParameters) { // do something with result }];

调用工作,服务完成它的工作。但是,现在服务已经开始工作了,我想深入研究如何使它更加稳定(即使我现在没有遇到任何问题)。

有人能给我解释一下吗

  1. 中断和失效之间的区别(当其中一种或另一种发生时不要理解)
  2. 如果有处理这两种情况的最佳做法
  3. 如何强制这两种情况(用于调试)

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-22 09:06:00

对问题1的答复:

代码语言:javascript
复制
[self.xpcConnection setInterruptionHandler:^{
    // Connection interrupted. Backend (service) may have crashed.
    // connection used to work but suddenly terminated
}];

[self.xpcConnection setInvalidationHandler:^{
    // No one is listening. Is the backend running?
    // connection cannot be established
}];

对问题3的答复:

中断:在事务处理过程中使后端退出(就在发送回复之前)

失效:根本不启动后端(服务)

对问题2的答复:

我听说,万一“中断”,你应该重新建立连接。当您的服务是一个启动代理时,它会被launchd重新启动,以防它崩溃,这是非常有用的。

实际上,在我的程序中,我不对这些情况采取行动,而只是向命令行发出警告消息。我的前端是个cli程序。或者,您可以将此警告记录在日志文件中,例如使用syslog。见‘人3 syslog’。在我的应用程序中,我使用自己的日志文件来配置详细信息和syslog。

亲切的问候,

罗伯特

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47418944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档