我正在尝试与游戏中心进行多人记忆游戏。
我按照this链接中的教程,将两个设备连接到一个匹配项,开始匹配。
在游戏中,当一个设备翻转一张卡时,另一个设备也必须翻转该卡。为此,我必须将id类型值发送到另一个设备,这样我就可以在两个设备中翻转该卡。 / p>
这是代码;
- (void)gameTouchBegin:(id)target {
[target flipTheCard];
[self sendCardMove:target];
}
- (void)sendCardMove:(id)target {
MessageCard message;
message.message.messageType = kMessageTypeCard;
message.target = target;
NSData* data = [NSData dataWithBytes:&message length:sizeof(MessageCard)];
[self sendData:data];
}
- (void)match:(GKMatch *)match didReceiveData:(NSData *)data fromPlayer:(NSString *)playerID {
if (message->messageType == kMessageTypeCard) {
NSLog(@"Other player flipped the card.");
// I can successfully write this line.
// So I can reach inside this function.
MessageCard * messageInit = (MessageCard *) [data bytes];
id gTarget = (id)messageInit->target;
[gTarget flipTheCard];
// At the three code lines above, I got an error.
}
}
正如我在代码末尾评论的那样,我收到了EXC_BAD_ACCESS错误,应用程序崩溃了。
我知道这是一个复杂的东西,有人有想法吗?
提前致谢。
答案 0 :(得分:0)
我认为这可能会导致问题。
我像这样定义消息体;
typedef struct {
Message message;
id target;
} MessageCard;
我想xCode不允许我在struct中定义“id”类型变量。所以我不能将id类型发送到其他设备。没有解决方案,我必须找到另一种方法来找出它是哪个卡。
谢谢。