2010-05-11 9 views
0

"라이브 바이트"를 최대 3MB로 가져 오는 응용 프로그램이 있습니다. 응용 프로그램이 메모리 경고를 표시하고 계속 충돌합니다. 내가 객체 할당 도구를 사용할 때 많은 장소에서 imageWithContentsOfFile을 사용하여 라이브 bytes.im을 볼 수 있습니다. 나는 NSConcreteData 객체가 더 많은 momory를 취하는 것을 볼 수 있습니다. 그것은 무엇을위한 공명입니까? 응용 프로그램에 얼마나 많은 메모리가 허용되는지 알 수 있습니다.객체 할당 및 메모리 경고

답변

1

사용 가능한 메모리 용량을 실제로 알 수는 없지만 일반적으로 iPhone/iPod 기기에서 최대 20MB까지 사용할 수 있습니다. 그러나 앱이 지나치게 많은 메모리를 사용하는 것뿐만 아니라 경고가 발행 될 때 메모리 사용을 줄이는데 실패 할 수도 있습니다. 따라서 메모리를 많이 사용하지 않아도 시스템에서 메모리 경고를 가져올 때 메모리를 해제하지 않으면 앱이 종료 될 수 있습니다. 적어도 내 경험은입니다. 어쩌면 다른 사람들이 무슨 일이 일어나고 있는지에 대해 더 자세한 지식을 갖고있을 수도 있습니다.

imageWithContentsOfFile:에는 캐싱 메커니즘이 내장되어 있으므로 동일한 이미지를 반복해서로드하는 경우 약간의 오버 헤드가 발생합니다.

편집 :imageWithContentsOfFile: 이미지를 캐시하지 않습니다. imageNames: 메서드는 캐시 이미지를 처리하며 이미지 생성 방법은 유일합니다.

+0

답장 보내 주셔서 감사합니다. 어떻게 캐시를 지울 수 있습니까? – Allen

+0

이미지 캐시는 라이브러리에 의해 처리됩니다. 그러나 3MB의 라이브 메모리 만 확보했다면 (Activity Monitor 도구를 사용하여 확인하십시오) 문제가 다른 것일 수 있습니다. 메모리 경고가 발생하면 뷰의 할당이 해제되고 예상치 못한 버그가 나타나는 상태로보기 컨트롤러를 쉽게 가져올 수 있습니다. 나는 그런 종류의 문제를 여러 번 경험했다. 이 문제는 메모리가 아니라 뷰 컨트롤러 또는 다른 코드가 뷰를 다시로드해야하는 상황을 처리하지 못하는 방식 일 수 있습니다. 예를 들어, 뷰가로드 된 후에 초기화되는 것에 의존하고있는 경우. – Felixyz

+0

예 저는 3MB의 라이브 바이트만을 가지고 있습니다. 당신이 자세히 설명해 주시겠습니까? – Allen