2012-08-28 2 views
1

Cocos2D 및 일부 UIKit이 섞여있는 앱이 있습니다. 최근 몇 가지 새로운 기능을 구현하여 메모리 관리가 잘못되었거나 무언가가 과도하게 출시되고 있지만 홈 버튼을 클릭하여 앱을 종료 할 때마다 콘솔이 종료됩니다. 단지 메시지 (lldb)와 충돌합니다. NSZombiesEnabled를 켜더라도 아무런 일도 일어나지 않습니다. 내가 무슨 뜻인지 몰라하지만이 고정 얻을 싶어요(lldb)로만 앱이 다운 되나요?

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

:

에 내 응용 프로그램 포인트있는 유일한 방법은 다음과 같습니다 라인입니다. 왜 이런 일이 일어나는 지 아는 사람이 있습니까?

미리 감사드립니다.

편집 : 나는 내가 unscheduleAllSelectors 및 stopAnimation을 한 후에적인 Cocos2D의 CCDirector에 일시 정지를 호출하고 있기 때문에 이것의 원인이라고 생각. 내가 2를 부르지 않으면, lldb 충돌이 없다.

답변

0

아마도 이것은 앱이 백그라운드 일 때 허용되지 않는 OpenGL에서 (Cocos2D를 통해) 렌더링하려고 시도하고 있음을 의미합니다.

+0

그런 다음 applicationDidBecomeActive에서 OpenGL 항목을 다시 시작 하시겠습니까? 현재 비록 applicationDidEnterBackground 또는 applicationWillEnterForeground에 아무 것도 없지만 여전히 (lldb)로 충돌하고 있습니다. –

2

앱이 예외 사항을 위반했기 때문에 살해당했습니다. 거의 확실하게, 귀하의 앱이 백그라운드로 전송 된 후 GPU를 사용하고 있습니다. 이것은 엄격하게 불법이며 시스템이 귀하의 앱에 kill 신호를 보내 게됩니다.

응용 프로그램이 디버거에서 실행 중이고 디버거에서 처리 할 수있는 것 (마하 예외와 같은)이 아닌 외부 신호 (예 : kill 신호)에 의해 응용 프로그램이 종료 된 경우 디버거는 알 수있는 정보를 제공합니다 이 main()의 마지막 줄에서 중지와 같은 보통 디버거를 일으키는 프로그램 진입 점에서 트랩 (보고.

중요한 점을, 그러나, 당신은 전에 모든 GPU 활동 을 종료해야한다는 것입니다 응용 프로그램이 배경을 입력하면 UIApplicationWillResignActiveNotification의 알림 처리기 나 유사한 이름의 응용 프로그램 대리자 콜백에이 작업을 수행하는 것이 좋습니다.

+0

그런 다음 applicationDidBecomeActive에서 OpenGL 항목을 다시 시작 하시겠습니까? 현재 비록 applicationDidEnterBackground 또는 applicationWillEnterForeground에 아무 것도 없지만 여전히 (lldb)로 충돌하고 있습니다. –

+0

@iBradApps 예, 사임 활성 상태에서 일시 중지하고 다시 시작해야 활성화됩니다. 확실히 GPU (또는 대신 Cocos2D가 GPU에 액세스하고있는 것)에 액세스하고 있습니다. 알림 처리기 또는 대리자 메서드에서 돌아 오기 전에 모든 액세스가 완전히 중지되었는지 확인해야합니다. –

+0

감사합니다. –