2012-03-27 3 views
0

iPad 앱에 불편을 겪고 있습니다. iPad 2에서는 응용 프로그램이 충돌없이 잘 실행되지만 iPad 1에서는 메모리 사용량이 너무 높을 때 시스템이 종료 될 때와 동일한 방식으로 임의로 종료됩니다 (앱이 장치에서 실행을 멈 추면 디버거가 " 일시 중지됨 "상태이고 콘솔 창에"(gdb) "라고 표시됩니다. 그러나 메모리 할당은 5MB 미만이므로 운영 체제가 나를 종료하지 못하게하려면 무엇을해야할지 모릅니다.높은 메모리 사용량 이외에 OS에 의해 iOS 응용 프로그램이 종료되는 조건은 무엇입니까?

내 응용 프로그램은 OpenGLES 및 RemoteIO 오디오 장치로 실시간으로 실행됩니다. 따라서 지속적으로 처리되지만 사용량이 많은 경우에는 충돌이 발생하지 않습니다.

또한 앱이 디버거에서 실행되지 않을 때 훨씬 안정적입니다.

메모리 사용량이 많은 이유 외에도 iOS가 응용 프로그램을 종료합니까? 그리고 그 이유가 무엇인지 디버그하여 해결할 수 있습니까?

감사합니다.

편집하는 것은

나는 충돌 내가 GL_LINE_STRIP와 그래프있어 정점의 수와 관련이있는 것으로 나타나는 찾는거야. 화면에 여러 개의 객체가 있는데, 각 객체는 2500 개의 꼭지점이있는 단일 선 스트립으로 구성됩니다. 일단 ~ 8 개의 객체 (~ 20,000 개의 총 버텍스)가 있으면 안정성이 떨어집니다.

또한 알파 선을 혼합했습니다.

내 해결 방법을 삭제하지 않고 문제를 해결할 수있는 방법은 없나요?

+0

당신은에 쏟아지고 디버거. 오류가 있습니까? backtrace ('bt')는 무엇을 보여줍니까? 가능성은 희박합니다. 트리거되는 중단 점을 설정할 가능성이 있습니까? –

+0

콘솔 (a.k.a. "로그")에 오류가 표시되지 않습니다. 역 추적은 없습니다. 앱 이름 옆의 디버그 탐색기에서 드롭 다운 화살표를 클릭하면 그 아래에 아무 것도 표시되지 않습니다. 내가 중단 점을 확인하고 아무도 트리거되지 않습니다. 귀찮아, 응? – user1021430

+0

잠깐, 콘솔에서'bt '를 실행하면 (실제로 디버거 콘솔에서 로그를 보여 주므로) 아무 일도 일어나지 않는다는 말입니까? –

답변

0

I 두 부분 관여 발견 용액 :

1) 내가 OpenGLES 위에 일부 UIKit 뷰를 표시하고 수시로 확인할. 이러한 뷰가 표시 될 때마다 모든 OpenGLES 렌더링 호출을 중지하면 안정화하는 데 도움이되었습니다.

2) glDrawArrays(GL_LINE_STRIP, ...)에 대한 몇 번의 호출마다 glFinish()을 호출하면 안정화하는 데 도움이됩니다.

라인 스트립의 알파를 1로 변경해도 효과가 없습니다.

하단 라인 : OpenGLES에 문제가있는 경우 스택 추적 또는 오류없이 앱이 중단 될 수 있습니다.

내 생각 엔 UIKit의 OpenGLES보기 뷰 또는 glDrawArrays의 조합이 (여기에 마지막 단락을 참조하십시오 http://www.songho.ca/opengl/gl_overview.html#flush를) 그래픽 "버퍼"를 오버로드 할 수있는 지표 많은 수의 호출이다