2009-09-21 5 views
1

메인 메뉴 상단에 하위보기 UIViewController를 만들고 추가하는 기본 UIViewController (주 메뉴)에 여러 개의 버튼이 있습니다. 하위 뷰를 제거하면 해당 컨트롤러에서 메모리가 해제되지 않습니다. 해당 하위보기 메모리를 즉시 릴리스 할 수 있습니까?iPhone - dealloc subview removeFromSuperview 때 UIViewController

예가 있습니까? 이것은 내 모든 문제를 해결할 것입니다! 미리 감사드립니다. 나는 하위 뷰를 추가하는 방법은 다음과

은 당신이있는 UIViewController이 유지되고 적어도 두 곳이있을 수 제공된 코드를 기반으로

if((UIButton *) sender == gameClassicBtn) { 
     GameClassic *gameClassicController = [[GameClassic alloc] 
          initWithNibName:@"GameClassic" bundle:nil]; 
     self.gameClassic = gameClassicController; 
     [gameClassicController release]; 
     [self.view insertSubview:gameClassicController.view atIndex:1]; 
    } 

답변

0

- 뷰 계층 구조 (self.view)이고 다른 하나 멤버 변수 (self.gameClassic). 뷰 계층 구조 참조 만 릴리스하고 멤버 변수는 릴리스하지 않는 것 같습니다. 후자를 릴리스하면 UIViewController가 할당 해제됩니까?

+0

메인 메뉴 코드 안에 아무 것도 공개하지 않습니다 ... 위의 코드가 어디에 위치합니까? 보기에서 gameClassic.h를 제거했다는 것을 파일에 알리는 방법을 모르겠습니다. 나는 [self.view removeFromSubview]에 의해 그 Subview를 제거한다. 내 메인 메뉴로 돌아 가기 위해서. – bbullis21

+0

기본적으로 내 문제는 메인 메뉴의 버튼을 클릭하여 Subview를 삽입하는 것입니다. 짧은 게임이 끝난 후 removeFromSubview를 수행하면 해당 하위 뷰의 메모리가 즉시 해제되지 않습니다. 따라서 주 메뉴에서 다른 버튼을 선택하면 다른 하위 뷰가로드되고 objectalloc은 계속 유지됩니다. – bbullis21

+0

GameClassic 클래스에서 일시적으로 (일시적으로 강조) retain 및 release를 재정의하고 각각에 중단 점을 넣습니다. 이렇게하면 인스턴스가 유지되고 해제되는 시점을 볼 수 있으므로 추가 참조 수가 제거되어야하는 위치를 찾을 수 있습니다. – fbrereto