2009-08-10 3 views
0
-(id)viewWillDisappear:(BOOL)animated 
{ 
report_memory_str(@"BEFORE RELEASE viewWillDisappear"); 
self.view = nil; 
report_memory_str(@"AFTER RELEASE viewWillDisappear"); 
} 

, 난 다른 컨트롤러에 밀어 넣기 전에 현재보기를 해제하려고 더 이상 사용 가능한 메모리는 좀 더 여유 메모리를하지 않는 이유는 무엇입니까? 더 많은 여유 메모리를 얻는 방법?아이폰 - 릴리스보기 및 내보기가 사라진다 때

2009-08-10 09:51:31.263 App[4622:207] BEFORE RELEASE viewWillDisappear -- Memory in use (in bytes): 7880704 
2009-08-10 09:51:31.280 App[4622:207] AFTER RELEASE viewWillDisappear -- Memory in use (in bytes): 7884800 

답변

0

릴리스를 호출했기 때문에 개체가 할당 취소 된 것은 아닙니다. 보관 횟수가 0이면 할당 취소로 표시됩니다. 아마도 여러분이 메모리 검사 전후에 호출되는 객체를 해제하고 보려고하는 객체의 dealloc에 ​​중단 점을 놓을 수 있습니다.

0

나는 viewDidDisappear: 대신 viewWillDisappear:에서보기를 해제합니다. 변경 사항이 애니메이션으로 적용되면보기를 삭제해야 삭제할 수 있습니다. superview가 유지하고 하위 뷰를 릴리스하는지 여부는 확실하지 않지만 이것이 뷰 계층 구조에있을 때 뷰가 즉시 삭제되지 않은 이유가 될 수 있습니다.

당신은 몇 초 후에 사용 된 메모리를 확인

  • 시도 할 수 있습니다.
  • Leaks 성능 도구를 사용하여 개체가 릴리스되거나 누출되는지 확인하십시오.
  • 실제로 접근 자 메서드에서보기를 해제했는지 확인하십시오.
+0

viewWithDisappear보다 viewDidDisappear를 사용하는 것이 더 좋습니다! 메모리는 새 컨트롤러에 많은 것을로드하기 때문에 나중에 메모리가 높아집니다. 누출 없음. – NicoMinsk

관련 문제