NSXPCConnection 或 XPCKit

Posted

技术标签:

【中文标题】NSXPCConnection 或 XPCKit【英文标题】:NSXPCConnection or XPCKit 【发布时间】:2012-10-06 22:41:26 【问题描述】:

为 Mac 实现 XPC 客户端和服务有两种选择(或者至少我知道两种)。 NSXPCConnection 是在 10.8 和 XPCKit 中引入的。我应该使用什么来实现驻留在菜单栏中并使用 XPC 从主应用程序读取数据的辅助应用程序。

我看到的主要区别是 XPCKit 将在 10.7 Lion 中工作,而 NSXPCConnection 仅在 10.8 Mountain Lion 中可用。在它们之间进行选择时,我还应该考虑什么。感谢使用这两种方法的开发人员的回复。

附:我的应用仍然可以在 10.7 中运行,但是根据我之前的经验,在发布后 2-3 个月内需要最新版本的 OS X 不是问题。

【问题讨论】:

我不确定您是否可以在应用程序和辅助应用程序之间使用 XPC 进行 rpc。我认为 XPC 只能用于与属于单个应用程序的 XPC 服务进行通信。 理查德·斯塔尔。您可以在应用程序及其助手之间使用 XPC 进行 IPC。通过使用自 10.7.4 起可用的应用程序组权利并使用 SMLoginItemSetEnabled() 将帮助程序添加到登录项,将自动为以其捆绑 ID 命名的帮助程序应用程序注册 mach 服务,然后主应用程序可以使用 IPC通过这项服务。 【参考方案1】:

最后我决定使用 NSXPCConnection。

它由 Apple 提供,因此更新出现问题的可能性较小。

自从 Mountain Lion 和 NSXPCConnection 发布以来,似乎不再支持 XPCKit。

我都试过了,对我个人而言,NSXPCConnection 似乎是一个更好的解决方案

【讨论】:

以上是关于NSXPCConnection 或 XPCKit的主要内容,如果未能解决你的问题,请参考以下文章

混合 NSXPCConnection 和 xpc C API

使用 NSXPCConnection 时如何同步等待回复块

从 XPC 服务创建 NSXPCConnection

NSXPCConnection 调试中断/失效

从 NSXPCConnection 传递非空参数时未调用应用回复

通过 NSXPCConnection 传递 xpc_object_t