2012-09-11 3 views
1

iOS 용 앱을 개발 중이며 메모리 부족 경고 문제가 발생합니다.UIView retainCount가 0이지만 메모리가 해제되지 않았습니다.

내 애플 버튼을 눌러시 파단이 많은 대형 뷰를로드하는 것입니다. 메모리 사용량이 늘어나고 꽤 이해할 수 있습니다 (30Mb에서 80Mb까지). 그러나 사용자가 다른 메뉴 항목을 선택하면이보기가 해제되지만! 앱이 사용하는 메모리 양이 줄어들지는 않습니다. 두 번째 줄 인쇄에

storeView.hidden = YES; 
NSLog(@"%d", [storeView retainCount]); 
[storeView removeFromSuperview]; 
storeView = nil; 

NSLog : 나는보기를 해제하려면 다음 코드를 사용 하나, 이렇게 출시 후 할당을 해제해야합니다. 내 구현 - (void) dealloc; 호출됩니다 (그리고 나는 그것을 호출합니다 [슈퍼 dealloc], 마지막 줄에). 그러나 그 후에도 여전히 메모리 부족 경고가 있습니다.

인스트루먼트는 유출 NSStrings 수 없었던 원인 메모리 경고의 몇 가지를 발견했다.

조언 좀 해주실 수 있습니까? 테인 카운트가 삭제 될 수 0 있지만 수없는 경우

+2

retainCount 속성을 잊어 버려서 사용하지 마십시오. –

+0

정말 감사합니다. 다른 제안? 객체는 deallocated됩니다. dealloc 메쏘드가 호출되었습니다. 그러나 기억은 풀리지 않는다. –

+1

메모리는 뷰 자체가 아니라 뷰가 보유하고있는 객체에 의해 소비됩니다. 당신의'dealloc'이 호출 될 때, 당신이 뷰에 의해 참조 된 객체들을 해제하고 있는지보십시오. 메모리 프로파일 러를 사용하여 실행하고 메모리가 어디 있는지 확인하십시오. – dasblinkenlight

답변

2

이형 통화는 유지 수를 낮 춥니 다. 보관 횟수가 0이고 변수에 액세스하려고 시도하면 여전히 작동 할 수 있으며 작동하지 않을 수 있습니다. 어느 쪽이든 의지 할 수는 없습니다.

+0

내 질문에 더 잘 이름을 붙여야합니다. 요점은 해당 뷰의 dealloc 메서드가 호출 된 후에도 메모리 사용량이 줄어들지 않는다는 것입니다. –

+2

그러면 메모리 경고를 일으키는보기가 아닙니다. – Alexander

관련 문제