混合 NSXPCConnection 和 xpc C API

Posted

技术标签:

【中文标题】混合 NSXPCConnection 和 xpc C API【英文标题】:Mix NSXPCConnection and xpc C API 【发布时间】:2013-01-01 13:21:09 【问题描述】:

我正在使用 NSXPCConnection 包装器处理 XPC 服务,并且由于 Objective-C 包装器无法处理 iosurfaceRef 对象,我想对 xpc.h 中定义的 C API 进行一些直接函数调用。但我找不到检索底层xpc_connection_t 引用的方法(正如我在NSXPCConnection.h 中看到的,有一个名为_xconnection 的私有ivar,它可能是我需要的引用)。 我错过了什么愚蠢的东西,还是不能简单地将 Objective-C 包装器和 C API 一起使用?

【问题讨论】:

【参考方案1】:

不,但是XPCKit 提供了这样一种转换机制,并且它与 10.7 兼容。

【讨论】:

对不起,我不确定我是否理解你。 XPCKit 提供什么样的转换?不支持 IOSurfaceRef(它在愿望清单中),并且它似乎没有提供从 xpc_connecion_t 引用获取 NSXPCConnection 的方法。它似乎是 NSXPCConnection 包装器的替代品,但也没有 IOSurface 支持。 当你配置你的XPCConnection对象时,使用它的.connection属性,并用接收到的对象调用IOSurfaceLookupFromXPCObject()。奖励:由于它是开源的,您甚至可以将其添加到 NSObject+XPCParse 类别中。 好的。这对我有帮助,即使它没有回答原始问题(如何检索 NSXPCConnection 对象的底层 xpc_connection_t )。谢谢! 对不起! :P 没有办法做到这一点,除非你想尝试一两次运行时破解。

以上是关于混合 NSXPCConnection 和 xpc C API的主要内容,如果未能解决你的问题,请参考以下文章

通过 NSXPCConnection 传递 xpc_object_t

XPC 在工作空间中的两个可可应用程序之间,NSXPCConnection 立即失效

NSXPCConnection 或 XPCKit

NSXPCConnection 调试中断/失效

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

XPC 服务:提高工作线程上的堆栈大小