gpt4 book ai didi

objective-c - NSData 和 void * 之间的转换

转载 作者:行者123 更新时间:2023-11-30 17:44:47 27 4
gpt4 key购买 nike

在我的iPhone应用程序中,我必须使用MQTT的基于C的静态库来发送和接收其有效负载,有效负载必须为void *,我需要发送文本、图片和语音等消息这是我的发送方法,我将所有类型的有效负载转换为 NSData 对象。消息是一个具有 void *payload 的结构

`+ (int)send:(NSString *)mqTopic payLoad:(NSData *)mqPayLoad`

MQTTClient_message pubmsg = MQTTClient_message_initializer;
pubmsg.payloadlen = mqPayLoad;

如何解决 C 和 ojbc 之间的类型冲突?

任何帮助都值得赞赏!

最佳答案

NSData 有一个方法- (const void *)bytes。因此这应该有助于解决您面临的类型冲突。

NSUInteger len = [mqPayLoad length];
void *typedData = malloc(len);
memcpy(typedData, [mqPayLoad bytes], len);
pubmsg.payloadlen = typedData;

由于 bytes 返回一个 const void* ,因此最好使用 memcopy() 而不是类型转换。

关于objective-c - NSData 和 void * 之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850341/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com