是否可以将 C 结构体打包到 Cocoa 中的 NSKeyedArchiver 中?
我正在编写一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,这是可能的。
阅读归档和序列化编程指南,一切都在这里用示例进行了解释,包括本例,尤其是 编码并解码 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 :)
而不是使用 NSData - 如果结构包含简单的数据项,而不是对象指针,您可以使用 NSValue
因为 NSValue 符合 NSCoding 协议,您可以使用您想要使用的方法。
Rather than use NSData - and if the struct contains simple data items, rather than objects pointers you can use NSValue
As NSValue conforms to the NSCoding protocol you can use the methods that you want to use.