我有一个带有Cocos2D的应用程序和一些UIKit混合在一起。我最近一直在实现一些新功能,所以可能内存管理错误或者有些东西被过度释放但是每当我通过单击主页按钮退出应用程序时,控制台只与消息(lldb)崩溃。即使我打开NSZombiesEnabled也没有什么不同的事情发生。
我的应用程序唯一指向的是一行如下:
libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient:
0x38101094: trap
0x38101096: nop
我不知道这意味着什么,但我很乐意解决这个问题。有谁知道为什么会这样?
提前致谢!
编辑 :我认为造成这种情况的原因是因为我在执行uncheduleAllSelectors和stopAnimation之后在Cocos2D的CCDirector上调用暂停。如果我不打电话给那些2,那么就没有lldb崩溃。
答案 0 :(得分:2)
您的应用程序因为违反了异常而被杀死。几乎可以肯定的是,在您的应用程序转移到后台后,您正在使用GPU,这严重违法,并会导致系统向您的应用发送终止信号。
当一个应用程序在调试器中运行并被外部信号(如杀死信号)杀死而不是调试器可以处理的东西(如mach异常)时,调试器只会为您提供它所知道的任何信息。程序入口点处的陷阱(这通常会导致调试器看起来像在main()
的最后一行停止。
但是,需要注意的重要一点是,在应用程序进入后台之前,您必须结束任何和所有GPU活动。执行此操作的好地方是UIApplicationWillResignActiveNotification
的通知处理程序或类似命名的应用程序委托回调。
答案 1 :(得分:0)
这可能意味着您仍在尝试使用OpenGL(通过Cocos2D)渲染内容,这在应用程序处于后台时是不允许的。
答案 2 :(得分:0)
原来这是我与Cocos2D有关的问题的实际修复:http://www.cocos2d-iphone.org/forum/topic/7326