在我的iPhone应用程序中,我必须使用MQTT的基于C的静态库来发送和接收其有效负载,有效负载必须无效*,我需要发送文本,图片和语音等消息 这是我的发送方法,我将所有类型的有效负载转换为NSData对象。消息是一个具有void * payload
的结构`+ (int)send:(NSString *)mqTopic payLoad:(NSData *)mqPayLoad`
MQTTClient_message pubmsg = MQTTClient_message_initializer;
pubmsg.payloadlen = mqPayLoad;
如何解决C和ojbc之间的类型冲突?
应该感谢任何帮助!
答案 0 :(得分:0)
NSData有一个方法- (const void *)bytes
。所以这应该有助于解决你所面临的类型冲突。
NSUInteger len = [mqPayLoad length];
void *typedData = malloc(len);
memcpy(typedData, [mqPayLoad bytes], len);
pubmsg.payloadlen = typedData;
由于字节返回const void*
,因此最好使用memcopy()
而不是类型转换。