2009-04-22 3 views
1

didReceiveMemoryWarning이 호출되는 방법과시기에 관해 빠른 질문이 있습니다. 나는이 방법을 올바르게 사용하는 방법을 완전히 이해하고있다. 그러나 문서에서 찾을 수없는 나의 질문은이 메서드를 호출 할 때 메모리가 차지하는 공간을 관리하는 것이 내 잘못인지 여부입니다.나는 항상 iPhone OS에 의해 호출 된 didReceiveMemoryWarning을 담당합니까?

내가 완벽하게 잘하고 있으며 iPhone OS가 메모리를 필요로 할 수 있으므로 제 3 자 앱이므로이 알림을 보냅니다. 나는 이상한 행동을보기 위해 누수, ObjectAlloc 및 내가 사용할 수있는 도구를 실행했습니다. 내 메모리 사용량은 최대 2.2MB로 최고입니다. 특히 현명한 코드 일을하는 것은 끔찍한 일이 아닙니다.

이제는 다른 앱을 열어두고 여기저기서 iPhone을 사용하고 개발중인 앱을 엽니 다. 이 뷰는 궁극적으로 원격 XML 피드에서 작성된 dataSource를 표시하는 UITableViewController입니다. 그래서 내가 끔찍한 잘못을 저지르고있을 가능성이 있습니다. 하지만 내 코드에 대해 비난하기 전에이 방법을 더 잘 이해해야합니다.

메모리 관리 방식이 완벽하게 정상적인 앱에서이 방법을 호출 할 수 있습니까?

답변

1

메모리 경고는 언제든지 발생할 수 있습니다. 메일과 사파리와 같이 백그라운드에서 실행되는 앱이 있습니다.

1

많은면에서 누가 책임이 있는지는 중요하지 않습니다. 애플의 코드가 새어 나온다. 특히 이미지 피커와 HTTP 클래스 (비록 후자가 심하게 누출되지는 않지만). 경고의 원인은 무엇이든, 당신은 코드를 복구 할 수있는 유일한 사람입니다.

어플에 대한 문서화 된 메모리 영역이 없으므로 언제든지이 메시지를 앱에 보낼 수 있다고 생각합니다. 그것은 확실히 시뮬레이터와 전화에서 다른 시간에 보내집니다. 즉, 메모리 경고를받지 못하도록 보장 할 수있는 "안전한 발자국"이 없음을 의미합니다. 분명히 메모리 공간을 적게 유지하면 가능성이 줄어 듭니다.

어쩌면 많은 누출이 있는지 확인하기 위해 샘플 코드를 게시해야 할 것입니다. 당신이 설명하는 응용 프로그램은 정상적인 사용 상태에서 메모리 경고를 일으키지 않아도 될만큼 간단하게 들립니다.

관련 문제