1

我有一个混合了 Cocos2D 和一些 UIKit 的应用程序。我最近一直在实现一些新功能,所以内存管理可能是错误的或者某些东西正在过度释放,但是每当我通过单击主页按钮退出应用程序时,控制台就会崩溃仅使用消息(lldb)。即使我打开 NSZombiesEnabled 也没有什么不同。

我的应用程序唯一指向的是一条如下所示的行:

libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient:
0x38101094:  trap   
0x38101096:  nop  

我不知道这意味着什么,但我很想解决这个问题。有谁知道为什么会这样?

提前致谢!

编辑:我认为这是因为我在执行 unscheduleAllSelectors 和 stopAnimation 之后在 Cocos2D 的 CCDirector 上调用了暂停。如果我不调用那些 2,那么就没有 lldb 崩溃。

4

3 回答 3

2

您的应用程序因违反异常而被终止。几乎可以肯定的是,在你的应用程序被转移到后台之后,你正在使用 GPU,这是非常非法的,并且会导致系统向你的应用程序发送终止信号。

当应用程序在调试器中运行并且它被外部信号(如终止信号)而不是调试器可以处理的东西(如马赫异常)杀死时,调试器只会为您提供它知道的任何信息并在程序入口点(这通常会导致调试器看起来像是在main().

但是,需要注意的重要一点是,您必须在应用程序进入后台之前结束所有 GPU 活动。这样做的好地方是在通知处理程序中UIApplicationWillResignActiveNotification或在类似名称的应用程序委托回调中。

于 2012-08-28T18:22:39.150 回答
0

这可能意味着您仍在尝试在 OpenGL 中渲染内容(通过 Cocos2D),这在应用程序处于后台时是不允许的。

于 2012-08-28T18:20:26.917 回答
0

原来这是我与 Cocos2D 相关的问题的实际解决方法:http: //www.cocos2d-iphone.org/forum/topic/7326

于 2012-09-09T23:33:24.197 回答