首页 > 解决方案 > 重置/重新初始化 NSXPCConnection?

问题描述

如果这是一个明显的问题,或者我在这里表现出完全缺乏知识(这是准确的),请提前抱歉。

我们正在与 C API 交互。该 API 在后台存储各种会话/环境信息。有特定的 API 调用需要完全重新启动 API,但完成此操作的唯一方法是完全关闭调用它的客户端应用程序(API 的行为类似于单例,无法重新初始化自身)。

希望将 C API 包装在 XPC 服务中可以让我更优雅地关闭服务并重新启动它,这样我就可以避免重新启动整个客户端应用程序。

  1. 这是否是在 Cocoa 中思考这种需求的正确方式?
  2. 如果(如果)是,我将如何去做?我使用文件 -> 添加目标 -> XPC 服务向现有应用程序添加了一个简单的 XPC 服务。我可以调用 C API,所有工作都使用 NSXPCConnection 并从应用程序中点击适当的服务方法。不过,我对如何可能杀死/重新初始化 XPC 服务感到困惑。
  3. 有没有不同/更好的方法来看待这个?

欢迎任何方向/想法/批评

谢谢!

标签: objective-cxcodecocoansxpcconnection

解决方案


我可以让它与 NSXPCConnection 一起使用。

在父应用程序仍在运行时跟进Kill XPC,我调用了 API 的 dispose-ish 方法,然后exit(0)在 XPC 连接中的方法内部调用。

到目前为止,一切都很好!


推荐阅读