2009-08-26 2 views
0

여러 개의보기를 사용하는 iPhone 응용 프로그램을 쓰고 있는데 각각은 자체 컨트롤러가 있습니다. initWithNibName :을 사용하여 프로그래밍 방식으로로드되고 다른 컨트롤러로 전환하기 전에 해제되므로 한 번에 하나의보기 만 표시됩니다. 뷰 컨트롤러를 해제 한 후 (dealloc이 호출 된 것을 확인한 후) 모든 메모리가 해제되지 않았습니다. 나는 컨트롤러를 삭제할 때 모든 콘센트를 놓는다. 또한 컨트롤러의 dealloc에서 self.view를 nil로 설정해도 문제가 해결되지 않습니다. 계기의 누설은 누출을 나타내지 않지만 메모리 소비는 더 커집니다.nib에서로드 한보기 컨트롤러를 완전히 언로드하는 방법은 무엇입니까?

메모리에서 해당 컨트롤러가있는보기를 완전히 제거 할 수있는 방법이 있습니까? 나는 새로운 컨트롤러가 생성되기 전에 그리고 삭제 된 후에 동일한 프리 메모리 용량을 원한다.

답변

2

보유 횟수가 예상보다 높을 때를 더 잘 이해할 수 있도록 모든 클래스에서 유지 및 해제를 무시할 수 있습니다. 이 같은

뭔가 : 그가 말했다 때

- (id) retain 
{ 
    NSLog(@"Retain: Retain count is now %d", self.retainCount+1); 
    return [super retain]; 
} 

- (void) release 
{ 
    NSLog(@"Release: Retain count is now %d", self.retainCount-1); 
    [super release]; 
} 

, 나는 당신이 당신의 "메모리 누수가"시스템이 캐시 된 뭔가 아니라는 것을 확인해야한다 생각합니다. 동일한 순서를 반복하여 계속해서 더 많은 메모리를 사용할 수 있다면 누출이 발생합니다.

1

문제는 지금 해결되었습니다. UIWebView였습니다. 그것은 일부 캐시를 유지하고 그것을 지울 수있는 방법이 없었습니다. UIWebView를 UIScrollView로 대체 한 후 (간단한 로컬 페이지를 표시하는 데 사용됨) 문제가 사라졌습니다.

관련 문제