移动背景,iOS 5.1上的OpenGL ES崩溃

我有关于我的应用程序iOS的一个小问题。 当我使用iOS模拟器5.1 ipad / iphone应用程序正在工作,但是当我使用真正的iOS设备(iPad和iPhone 5.1)

点击主页button后,应用程序在后台移动时崩溃…出现此错误:

libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient: 0x33240094: trap 0x33240096: nop 

我发现这是OpenGL ES,它仍在计算和使应用程序崩溃,并发现这个函数:glFinish();

但是,这仍然不工作在我的代码示例:

 - (void)applicationDidBecomeActive:(UIApplication *)application { [[CCDirector sharedDirector] resume]; } - (void)applicationWillResignActive:(UIApplication *)application { glFinish(); [[CCDirector sharedDirector] pause]; } 

我认为问题就在这里有人谁有我的问题的想法? 谢谢

编辑:

问题解决了:

 - (void)applicationDidEnterBackground:(UIApplication *)application { [[CCDirector sharedDirector] stopAnimation]; } - (void)applicationWillEnterForeground:(UIApplication *)application { [[CCDirector sharedDirector] startAnimation]; } 

也许这可以帮助别人x)

在iOS 5.1中,强制要求您在被请求退出活动状态后不能打电话给OpenGL。

 - (void)applicationWillResignActive:(UIApplication *)application 

是停止一切的地方,无论是一个CADisplayLink还是一个[[CCDirector sharedDirector] stopAnimation]

从技术上讲,OpenGL调用的最后一个方法是这样的:

 - (void)applicationDidEnterBackground:(UIApplication *)application 

虽然在applicationWillResignActive之后暂停绘制通常是一个好主意,但这仅仅是一个build议,一些应用程序还有其他要求。 实际执行的是,一旦你的应用程序移动到后台,就不能进行任何OpenGL调用。

从文档 :

一旦你的应用程序退出了applicationDidEnterBackground:方法,它就不能进行任何新的OpenGL ES调用。 如果您的应用程序进行OpenGL ES调用,则会由iOS终止。

此外,请记住将glFinish()作为您的最终GL调用。

检查屏幕上是否有FPS节点,可能是渲染..

*编辑 – 并检查audio播放