Вам необходимо выделить currentSession, если он еще не распределен. Возможно, попробуйте изменить:
[self.currentSession initWithSessionID:kTankSessionID displayName:nil sessionMode:GKSessionModeClient];
К этому:
self.currentSession = [[GKSession alloc] initWithSessionID:kTankSessionID displayName:nil sesssionMode:GKSessionModeClient];
Возможно, вы также захотите добавить проверку, чтобы увидеть, выделен ли уже сеанс, и отменить его, если это происходит до того, как вы создадите новый. Я заметил некоторые улучшения в производительности и надежности, если вы сбрасываете сеанс каждый раз, когда ваши устройства пытаются подключиться, вместо повторного использования одного и того же сеанса.