gpt4 book ai didi

ios - 如果在 iOS7 中后台运行 cocos2d 2.1 应用程序同时观看 Game Center 屏幕(排行榜、成就)会崩溃

转载 作者:可可西里 更新时间:2023-11-01 03:14:54 27 4
gpt4 key购买 nike

我这里有一个 100% 可重现的崩溃。

如果在 iOS7 中后台运行 cocos2d 2.1 应用程序同时观看 Game Center 屏幕(排行榜、成就)会崩溃。按下主页按钮时它会立即崩溃。

在 CCGLView.m 中的第 275 行崩溃:

if(![_context presentRenderbuffer:GL_RENDERBUFFER])

令人头疼的是,我另一秒钟下载了官方 cocos2diphone 2.1 的新副本,安装了它的模板并在将它连接到与我已经设置了游戏中心排行榜等的有问题的应用程序相同的应用程序 ID 后运行了主要应用程序向上。它不会崩溃。所以我在 lib 中的 cocos2d 文件夹上运行了一个 diff,除了我在 CCDrawingPrimitives.h/m 中添加了一些 C 函数代码之外没有什么区别......应该不是问题所在。所以问题不应该在 cocos2d 本身,而是使用它或我的项目设置以某种方式导致它。

更新:

问题似乎出在 2.1 或更早版本中使用的 cocos2d 应用程序模板中。它看起来像这样:

-(void) applicationDidEnterBackground:(UIApplication*)application
{
if( [navController_ visibleViewController] == director_ )
[director_ stopAnimation];
}

这里明显的错误是,如果您使用 navController 打开 Game Center Controller ,那么当按下主页按钮时,director_ 的 visibleViewController 将成为 GC Controller ,因此不会调用 stopAnimation。这会导致 iOS7 崩溃,但 iOS6 似乎不会……模板 cocos2d 2.1 应用程序也不会(这里仍然很困惑)。

当前的修复是注释掉 if( [navController_ visibleViewController] == director_ ) 以便始终调用 stopAnimation。不确定它是否有任何副作用,但现在会使用它。

最佳答案

好电话。我遇到了和你一样的问题,你的帖子帮助我弄清楚了我的应用程序崩溃的原因。

所以我的解决方案是在显示游戏中心之前停止导演动画。

[[CCDirector sharedDirector] stopAnimation]
[[CCDirector sharedDirector] presentViewController:gcViewController animated:YES completion:nil];

然后在游戏中心 View dismiss回调中重启动画

- (void) gameCenterViewControllerDidFinish:(GKGameCenterViewController *)gameCenterViewController
{
[[CCDirector sharedDirector] dismissViewControllerAnimated:YES completion:nil];
[[CCDirector sharedDirector] startAnimation];
}

您更新后的解决方案应该可以工作,但在这里也一样,我不确定是否会有任何副作用。我想将游戏中心本身包裹起来是一种更安全的方法。

再次感谢您提出这个问题!

关于ios - 如果在 iOS7 中后台运行 cocos2d 2.1 应用程序同时观看 Game Center 屏幕(排行榜、成就)会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285704/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com