2013-10-23 2 views
0

내 게임에 오류가 발생하여 cocos2d-iphone을 사용합니다.실제로 많은 양의 메모리를 자주 릴리스해야하는 앱에서 NSZombies를 장시간 사용하면

이 발생하면, 엑스 코드는 다음 중 하나를 수행합니다

  • 나에게 관련 접촉을 처리 cocos2d-iphone의 프레임 워크의 일부를 표시 역 추적 등 어떤 스택, 나에게 main.m 파일을보기 ~ CCMenu. 이것은 당연히 문제의 원인이되는 것이 내 CCMenu 인스턴스 중 하나임을 시사합니다. 그러나 backtrace가 어떤 이유로 프레임 워크의이 영역에만 국한되어 있기 때문에 어떤 것을 찾을 수 없습니다. 기본적으로 backtrace는 내 코드를 다루지 못하기 때문에 내 실수를 표시하지 않으며 단지 cocos2d-iphone의 것입니다. 문제를 일으킨 코드는 내 코드였습니다.

행운을 잃어서, 나는이 NSZombie 것을 시도하기로 결정했습니다. 나는 계획 메뉴에 가서 좀비 부분을 확인했다.

내가 읽은 것으로부터, 그것은 무엇이든을 결코 풀어주지 않는다. 이 방법은 내가 갖고 있지 않아야 할 때 접근하려고했던 객체가 무엇인지 말해 줄 수 있습니다.

좋은 계획 같아요. 하지만 그것은 메모리를 공개하지 않는다는 사실에 우려를줍니다. 내 앱은 게임이며 엄청난 양의 텍스처를로드하며 사실 새로운지도를 방문 할 때마다 많은 양의 텍스처를 릴리스해야합니다. 내 앱이 그 중 일부를 공개하지 않으면 게임이 몇 분 지나면 충돌이 일어날 것이라고 생각합니다. 매우 그래픽이 많은 게임입니다. ...

몇 분은 충분해야한다 -

이제 내가 할 일은, 오류를 찾아 그것을 해결하고 좀비를 해제하고 하루에 전화 때문에 즉, 아주 큰 문제가 아니다 말할 수

...하지만 불행히도이 오류를 재현하는 방법에 대해서는 거의 알지 못합니다. 사실, 그것을 재현하려고 몇 시간을 보냈습니다. 내 유일한 단서는 내 게임에서 CCMenu 인스턴스와 관련 될 수 있지만 게임의 거의 모든면이 어쨌든 CCMenu 인스턴스입니다.

따라서 오류 재현을 시도하는 동안 오랜 시간 동안 좀비를 사용하고 싶습니다. 내 앱이 좋은 상태로 메모리를 해제하지 않아 충돌 할 가능성이 있기 때문에 가능하지 않을 수도 있습니다. 나는 무엇을해야합니까?

+0

시뮬레이터 (디버그) 모드에서 좀비를 활성 상태로 유지하는 것이 좋습니다. 내가 시도한 것은 iOS 오디오 녹음 및 재생 응용 프로그램이며 응용 프로그램은 최대 2GB의 메모리 사용량 (NSZombieEnabled 포함) 이상으로 크래시되지 않았습니다. 사실이 문제를 일으키지 않고이 플래그를 '디버그'모드에서 사용할 수 있습니다. – Ashok

답변

1

NSDeallocateZombies도 켜면 개체가 결국 해제됩니다.