2013-06-28 3 views
0

Я пытаюсь создать многопользовательскую память с игровым центром.EXC_BAD_ACCESS при отправке данных с игровым центром

Я следил за учебником по ссылке this, подключил два устройства к совпадению, начал матч.

В игре, когда одно устройство переворачивает карту, другое должно перевернуть эту карту. Для этого мне нужно отправить значение идентификатора на другое устройство, чтобы я мог перевернуть карту на два устройства.

Вот код;

- (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

Похож на проблему управления памятью. Вы пробовали использовать опцию 'Zombies' в' Инструменты'? –

+0

Зомби ничего не показывают, только EXC_BAD_ACCESS .. –

ответ

0

Я думаю, что это может вызвать проблемы.

Я определяю тело сообщения как это;

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

Я полагаю, что xCode не позволяет мне определять переменные типа «id» в struct. Поэтому я не могу отправить тип id на другое устройство. В этом нет решения, я должен найти другой способ узнать, какая именно карта.

спасибо.