奇怪的GameKit行为。其他人看到这个?

时间:2012-06-20 14:21:21

标签: iphone objective-c ios xcode game-center

我正在运行Xcode 4.3.3并且我的目标是iOS 5.1。我试图在游戏中包含游戏中心功能。

在对GKLocalPlayer进行身份验证时,会向用户显示登录游戏中心警报视图或显示已登录。到目前为止,这一切都很好,但如果用户按下创建新帐户按钮,然后在根视图控制器后面移动任何打开的模态视图,并从控制台吐出以下错误:

  

对开始/结束外观转换的不平衡调用   < GKModalRootViewController:内存地址>。

我尝试在应用委托和根视图控制器之间移动GKLocalPlayer身份验证代码。我还尝试在一个新的空白项目中实现身份验证。我有没有使用Storyboard和ARC尝试过它。在所有这些情况下,结果都是相同的:隐藏在根视图控制器后面的模态和给出的错误。

以下是我从app delegate的应用程序调用的GKLocalPlayer身份验证方法: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.
        }
    }];
}

Here是它的截图。在此图片中,根视图控制器具有50%alpha值的背景。该错误已被推送到根视图控制器后面。

This stackoverflow question包含对此错误的唯一引用(关于GKModalRootViewController)我可以找到,但它不适合(a。)我不使用cocos2d。 (b。)无论我是否执行segue,我都不会触及viewWillAppear:或viewDidAppear :. (c。)没有给出可接受的答案。

This questionthis one似乎涉及相同的问题(视图层次结构被销毁)但未得到答复,并且未提及控制台错误消息。

这是否会发生在其他人身上?关于可能导致这种情况的任何想法?

UPDATE 1:我甚至将验证码放入连接到模态视图中按钮的IBAction中,以避免任何初始化冲突。它没有帮助。

更新2:我尝试将身份验证代码移动到GCD后台队列中。他的结果是一样的。

Here是测试项目(GameCenter准备就绪,已经输入了我的应用程序的Bundle ID)。

测试:

  1. 在测试设备/模拟器上注销游戏中心(如果有的话) 登录)。
  2. 构建并运行该应用程序。
  3. 按信息按钮。
  4. 验证
  5. 当出现登录游戏中心警报时,按新建 帐户
  6. 取消
  7. 控制台中是否显示“不平衡呼叫...”消息?做了 模态视图(使用“验证”按钮)消失了吗?
  8. 按信息按钮。
  9. 模态再次显示?

1 个答案:

答案 0 :(得分:2)

此错误出现在“6.0中修复的错误”列表中。我知道你会喜欢一种解决方法,但是当你依赖它的API是错误的时候,那很有可能。

然而,你可以高兴5.x用户正在慢慢消失。

祝你的应用好运。