iphone - 奇怪的 GameKit 行为。还有其他人看到这个吗?

标签 iphone objective-c ios xcode game-center

我正在运行 Xcode 4.3.3 并且目标是 iOS 5.1。我正在尝试在游戏中包含 Game Center 功能。

当对 GKLocalPlayer 进行身份验证时,用户会看到登录游戏中心警报 View 或显示已登录。到目前为止这一切都很好,但是如果用户按下 Create New Account 按钮,然后任何打开的模态视图都被移到 Root View Controller 后面,并且从控制台吐出以下错误:

Unbalanced calls to begin/end appearance transitions for <GKModalRootViewController: memory address>.

我已经尝试在应用委托(delegate)和 Root View Controller 之间移动 GKLocalPlayer 身份验证代码。我还尝试在一个新的空白项目中实现身份验证。我已经尝试过使用和不使用 Storyboards 和 ARC。在所有这些情况下,结果都是相同的:模式隐藏在 Root View Controller 后面并给出错误。

这是我从应用委托(delegate)的application:didFinishLaunchingWithOptions:方法调用的 GKLocalPlayer 身份验证方法:

- (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是它的截图。在这张图片中, Root View Controller 的背景具有 50% 的 alpha 值。此错误已将模态推到 Root View Controller 后面。

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

This questionthis one似乎涉及相同的问题( View 层次结构被破坏)但没有得到答复,也没有提及控制台错误消息。

这是否发生在其他人身上?关于可能导致此问题的任何想法?

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

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

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

测试:

  1. 退出测试设备/模拟器上的 Game Center(如果您 已登录)。
  2. 构建并运行应用。
  3. 按信息按钮。
  4. 验证
  5. 当出现登录 Game Center 提示时,按 Create New 帐号
  6. 取消
  7. “Unbalanced calls...”消息是否出现在控制台中?有没有 模态视图(带有身份验证按钮)消失了吗?
  8. 按信息按钮。
  9. 是否再次显示模态?

最佳答案

此错误出现在“Apple 在 6.0 中修复的错误”列表中。我知道您会喜欢一种解决方法,但是当您所依赖的 API 存在错误时,这种可能性很小。

不过,您可以为 5.x 用户正在慢慢消失而高兴。

祝您的应用程序好运。

关于iphone - 奇怪的 GameKit 行为。还有其他人看到这个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11121693/

相关文章:

objective-c - 在类级别初始化静态 NSString

ios - 确定按钮背景图像 - Objective-C (Xcode)

ios - 在 iOS UIView Swift 中为展开的绘图设置动画

ios - 在 Swift 中将函数保存到 NSUserDefaults

iphone - 在应用程序中实现 iPhone 应用程序

iphone - NSZombieEnabled 不报告导致 EXC_BAD_ACCESS 错误的对象类型

objective-c - 在 Swift 中创建等效的 Objective-C Getter 和 Setter

iphone - 如何判断 UITableView 动画何时完成?

iphone - 无法更新 uitableview 行

ios - 选择场景中的一个点来放置节点(SpriteKit、Swift)