1

在我的iPhone应用程序中,我必须使用MQTT的基于C的静态库来发送和接收它的payload,payload必须是void *,我需要发送文本、图片和语音等消息这是我的发送方式,我扭曲所有类型有效载荷到 NSData 对象。并且消息是一个结构,它具有 void *payload

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

MQTTClient_message pubmsg = MQTTClient_message_initializer;
pubmsg.payloadlen = mqPayLoad;

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

任何帮助都应该不胜感激!

4

1 回答 1

1

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

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

由于 bytes 返回 a const void*,因此最好使用 amemcopy()而不是 typecast。

于 2013-11-08T02:23:09.770 回答