2012-06-20 35 views
7

我正在運行Xcode 4.3.3,目標是iOS 5.1。我試圖在遊戲中包含Game Center功能。奇怪的GameKit行爲。任何人看到這個?

當驗證GKLocalPlayer用戶呈現的登錄到遊戲中心警報視圖或顯示在被記錄下來。到目前爲止,這一切都是好的,但如果用戶按下創建新帳戶按鈕,然後任何打開的模態視圖被移動的根視圖控制器和後面以下錯誤從控制檯吐:

不平衡呼叫開始/結束的外觀轉變爲 < GKModalRootViewController:存儲器地址 >。

我試着移動應用程序委託和根視圖控制器之間的GKLocalPlayer身份驗證代碼。我也嘗試在一個新的空白項目中實現身份驗證。我嘗試過,沒有故事板和ARC。在所有這些情況下,結果都是一樣的:隱藏在根視圖控制器後面的模態和給定的錯誤。

這裏是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值的背景。這個bug被模式推到了根視圖控制器的後面。

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. Press Authenticate
  5. 當登錄遊戲中心警報出現時按創建新 帳戶
  6. 新聞取消
  7. 控制檯中是否顯示「Unbalanced calls ...」消息? 模態視圖(帶有「驗證」按鈕)消失了嗎?
  8. 按信息按鈕。
  9. 是否再次顯示模式?
+1

你還在遇到這個問題嗎? – NathanChristie

+0

這個問題在iOS 5.1.1中仍然存在,但是iOS 6解決了這個問題。 – Endersstocker

回答

2

此錯誤出現在「Apple固定在6.0中的bug」列表中。我知道你會喜歡解決方法,但是當它依賴於它的API是錯誤的時候,那很可能會很渺茫。

然而,你可以慶幸5.x用戶正在慢慢消亡。

祝您的程序好運。