Это сводит меня с ума. Каждый раз, когда я пытаюсь выполнить аутентификацию локального игрока в Game Center, я получаю нить-1 сигкилл. Это происходит асинхронно после того как я установить localPlayer
«ы authenticateHandler
как так:Идентификация игрового центра всегда приводит к sigabrt
- (void)authenticateLocalPlayer
{
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0)
{
GKLocalPlayer __weak *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error)
{
if (viewController != nil)
{
[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentViewController:viewController animated:YES completion:nil];
}
else if (localPlayer.isAuthenticated)
{
NSLog(@"Player authenticated");
}
else
{
NSLog(@"Player authentication failed");
}
};
}
}
Любые идеи?
Это не проблема - он правильно определяет операционную систему и выполняет содержимое, если заявление. Он просто падает после запуска блока асинхронно. –
[GKLocalPlayer localPlayer] возвращает singleton, а __weak вызывает отправку релиза в какой-то момент (я не понимаю, когда это произойдет, но в будущем), и нет необходимости выпускать синглтон. localPlayer может быть освобожден вместе с блоком до того, как блок завершит выполнение. Попробуйте удалить __weak; – RobertL