首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过NSXPCConnection传递xpc_object_t

通过NSXPCConnection传递xpc_object_t
EN

Stack Overflow用户
提问于 2012-12-31 23:47:02
回答 1查看 1.4K关注 0票数 3

我是XPC服务编程的新手,我正在尝试将在XPC服务中创建的IOSurface共享给主机应用程序。我可以使用NSXPCConnection接口设置一个简单的主机和服务,现在我想我应该使用这两个方法(在IOSurfaceAPI.h中找到)将IOSurface传递给主机:

代码语言:javascript
复制
IOSurfaceRef IOSurfaceLookupFromXPCObject(xpc_object_t xobj);
xpc_object_t IOSurfaceCreateXPCObject(IOSurfaceRef aSurface);

有没有一种方法可以使用xpc.hAPI传递xpc_object_t,或者我应该使用can (如NSXPCConnection中所定义的)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-01 08:13:13

问得好。The "Daemons and Services Programming Guide"声明XPC代理方法只能处理以下数据类型:

on)

  • BOOL

  • C字符串算术类型(int、char、float、double、uint64_t、NSUInteger和so
  • C结构和数组仅包含列出的实现NSSecureCoding协议的

对象的类型

xpc_object_t只是void *的一个类型定义,所以它不符合这些标准中的任何一个,我看不到有任何方法可以将它包装在可以满足这些标准的东西中。(尝试将其转换为数据,或将其转换为适当大小的int将不起作用。)

另一方面,在10.8中,xpc_object_t也是一个足够的Objective-C对象,可以与ARC一起保留/释放,可以添加到Objective-C集合中,等等。

尝试在你的协议上传递一个xpc_object_t是很容易的,只是为了看看苹果是否留下了一个未被记录的漏洞。试试看!

否则,低级XPC API肯定会起作用:

代码语言:javascript
复制
 xpc_object_t message = xpc_dictionary_create(NULL, NULL, 0);
 xpc_object_t xpcSurface = IOSurfaceCreateXPCObject(aSurface);
 xpc_dictionary_set_value(message, "surface", xpcSurface);
 xpc_connection_send_message(connection, message);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14103514

复制
相关文章

相似问题

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