我目前正在執行我的遊戲的網絡層,但我正在取得進展,但我遇到了一些非常奇怪的事情,我希望有人可以擺脫一些可能:通過類型NSData發送時數據丟失
發送我的數據跨越我正在其編碼爲類型NSData的前(message.cards = [MovePlayer beginEncodeMyCards:myCards]),然後將其分配給一個指針(message.cards)
MessageMove message;
message.message.messageType = kMessageTypeMove;
/**/message.cards = [MovePlayer beginEncodeMyCards:myCards];/**/
NSData *data = [NSData dataWithBytes:&message length:sizeof(message)];
如果我做所有客戶端解碼如下:
MessageMove *myMessage = (MessageMove *) [data bytes];
/**/myCards = [MovePlayer beginDecodeMyCards:myMessage->cards cardArray:myCards];/**/
一切工作正常,我能夠解碼myMessage->卡,但是當我嘗試做同樣的遠程發送對象後,我可以看到正確的消息類型(kMessageTypeMove),但不卡數據(myMessage->卡)。
如果任何人都可以請一些啓發到這一點,我將不勝感激
千恩萬謝
感謝您的回覆,你有我可以遵循的例子嗎? – godzilla
事實證明,我正在做的是在beginEncode內引用的序列化,此方法返回一個指向包含我的卡片信息的NSData的指針。我仍然不確定我如何發送整個值而不僅僅是指針.... – godzilla
基本上,不要這樣做:'[NSData dataWithBytes:&message length:sizeof(message)]''。這樣做:'[NSKeyedArchiver archivedDataWithRootObject:message]'。 –