Странное поведение GameKit. Кто-нибудь еще это видит?

Я запускаю Xcode 4.3.3 и ориентируюсь на iOS 5.1. Я пытаюсь включить функциональность Game Center в игру.

При аутентификации GKLocalPlayer пользователю предоставляется окно предупреждения Войти в Game Centerили показано, что он вошел в систему. Пока все в порядке, но если пользователь нажмет кнопку Создать Кнопка «Новая учетная запись» , затем все открытые модальные представления перемещаются за контроллер корневого представления, и из консоли выдается следующая ошибка:

Несбалансированные вызовы для начала/конца переходов внешнего вида для адрес памяти >.

Я попытался переместить код аутентификации GKLocalPlayer между делегатом приложения и корневым контроллером представления. Я также попытался реализовать аутентификацию в новом пустом проекте. Я пробовал это с раскадровками и ARC и без них. Во всех этих случаях результаты были одинаковыми: модальные окна были скрыты за корневым контроллером представления и выдавалась ошибка.

Вот метод аутентификации GKLocalPlayer, который я вызываю из метода application:didFinishLaunchingWithOptions:моего делегата приложения:

- (void)authenticateLocalPlayer
{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    [localPlayer authenticateWithCompletionHandler:^(NSError *error) {
        if (localPlayer.isAuthenticated) {
            // Perform additional tasks for the authenticated player.
        } else {
            // Disable Game Center features.
        }
        if (error) {
            // Handle error.
        }
    }];
}

Вот его скриншот. На этом изображении контроллер корневого представления имеет фон с альфа-значением 50%. Из-за этой ошибки модальное окно было отодвинуто за корневой контроллер представления.

Этот вопрос stackoverflow содержит единственную ссылку на эту ошибку (относительно GKModalRootViewController), которую я могу найти, и она не подходит, поскольку (а) я не использую cocos2d. (b.) Это происходит независимо от того, выполняю ли я переход, и я не касаюсь viewWillAppear: или viewDidAppear:. (c.) Не было дано приемлемого ответа.

Этот вопроси этот похоже связаны с одной и той же проблемой (с уничтожением иерархии представлений), но остаются без ответа и не упоминают сообщение об ошибке консоли.

Это случается с кем-либо еще? Любые идеи о том, что может быть причиной этого?

ОБНОВЛЕНИЕ 1:Я дошел до того, что поместил код аутентификации в IBAction, связанный с кнопкой в ​​модальном представлении, чтобы избежать конфликтов инициализации. Это не помогло.

ОБНОВЛЕНИЕ 2:Я попытался переместить код аутентификации в фоновую очередь GCD. он результаты были такими же.

Воттестовый проект (готовый для GameCenter с уже введенным Bundle ID моего приложения).

Для проверки:

  1. Выйдите из Game Center на тестовом устройстве/симуляторе (если вы авторизовался).
  2. Создайте и запустите приложение.
  3. Нажмите информационную кнопку.
  4. Нажмите Аутентификация.
  5. При появлении предупреждения «Войти в Game Center» нажмите «Создать новый». Аккаунт.
  6. Нажмите Отмена.
  7. В консоли появилось сообщение «Несбалансированные вызовы...»? Разве модальное представление (с кнопкой аутентификации) исчезает?
  8. Нажмите кнопку информации.
  9. Снова появилось модальное окно?

7
задан Community 23 May 2017 в 12:01
поделиться

0 ответов