1

私の 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 の間の型の競合を修正するにはどうすればよいですか?

どんな助けでも大歓迎です!

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*a を使用する方がよいでしょう。memcopy()

于 2013-11-08T02:23:09.770 に答える