是否可以将 C 结构体打包到 Cocoa 中的 NSKeyedArchiver 中?

发布于 2024-12-05 04:47:06 字数 320 浏览 0 评论 0原文

我正在编写一个 iOS 应用程序,它需要通过 UDP 套接字以非常有效的方式与 python 应用程序进行通信。

在中间,我有一个 bonjour 服务,它充当我的 iOS 应用程序和托管 python 应用程序进行通信的桥梁。

我正在构建自己的协议,它是一个简单的 C 结构。我已经将字符串打包到 NSKeyedArchiver 实体中的代码,这些实体将被打包到 NSData 中并发送。另一边有一个 NSKeyedUnarchiver。

问题是它无法理解我发送的 C 结构。有没有办法将 C 结构放入 NSKeyedArchiver 中?我应该如何修改我的中间服务以删除它?

I'm programming an iOS application which needs to communicate with a python app in a very effecient way thru UDP sockets.

In the middle I have a bonjour service which serves as a bridge for my iOS app and host python app to communicate.

I'm building my own protocol which is a simple C structure. The code that I had already as packing strings into NSKeyedArchiver entities which by their turn would be packed in NSData and sent. In the other side there is a NSKeyedUnarchiver.

The problem is that it can't understand the C struct i'm sending. Is there a way of putting a C structure inside a NSKeyedArchiver? How should I modify my middle service to remove this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

四叶草在未来唯美盛开 2024-12-12 04:47:06

是的,这是可能的。

阅读归档和序列化编程指南,一切都在这里用示例进行了解释,包括本例,尤其是 编码并解码 C 数据类型 :)

Yes, it is possible.

Read the Archives and Serializations Programming Guide, everything is explained here with samples, including this case, especially the part Encoding and decoding C Data Types :)

丢了幸福的猪 2024-12-12 04:47:06

而不是使用 NSData - 如果结构包含简单的数据项,而不是对象指针,您可以使用 NSValue

NSValue valueFromStruct = [[NSValue value:&aStruct withObjCType:@encode(YourStructType)] retain];

因为 NSValue 符合 NSCoding 协议,您可以使用您想要使用的方法。

Rather than use NSData - and if the struct contains simple data items, rather than objects pointers you can use NSValue

NSValue valueFromStruct = [[NSValue value:&aStruct withObjCType:@encode(YourStructType)] retain];

As NSValue conforms to the NSCoding protocol you can use the methods that you want to use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文