0

我正在尝试使用游戏中心制作多人记忆游戏。

我按照链接中的教程,将两个设备连接到一个匹配,开始匹配。

在游戏中,当一个设备翻转卡片时,另一个设备也必须翻转该卡片。为此,我必须向另一个设备发送一个 id 类型值,以便我可以在两个设备中翻转卡片。

这是代码;

- (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 错误并且应用程序崩溃了。

我知道这是一个复杂的东西,有人有想法吗?

提前致谢。

4

1 回答 1

0

我认为这可能会导致问题。

我这样定义消息体;

typedef struct {
    Message message;
    id target;
} MessageCard;

我想 xCode 不允许我在 struct 中定义“id”类型变量。所以我无法将 id 类型发送到其他设备。对此没有解决方案,我必须找到另一种方法来找出它是哪张卡。

谢谢你。

于 2013-06-28T07:52:07.437 回答