2010-03-25 5 views
1

여기에 다음 코드가 현재 모달 뷰 컨트롤러를 보는 데 사용됩니다.컨트롤러를 닫을 때 dealloc 메서드가 presentModalViewController에서 호출됩니까

[[self navigationController] presentModalViewController:doctorListViewNavigationController animated:YES]; 

닫기 작업은 다음보기 컨트롤러 (DoctorListViewController)에 있습니다. 지금 추가 한 다음 코드를 보면 이해할 수 있습니다.

-(void)doctorsListAction 
{ 
    if(isFirst == YES) 
    { 
     [self getDoctorsListController]; 
     [[self navigationController] presentModalViewController:doctorListViewNavigationController animated:YES]; 

    } 
} 

-(void)getDoctorsListController 
{ 
    DoctorListViewController *doctorListViewController=[[DoctorListViewController alloc]init]; 
    doctorListViewController.doctorList=doctorList; 
    doctorListViewNavigationController=[[UINavigationController alloc]initWithRootViewController:doctorListViewController]; 
    doctorListViewNavigationController.navigationBar.barStyle= UIBarStyleBlackOpaque; 
    [doctorListViewController release]; 

//code in next DoctorListViewContrller to dismiss the view. 
//code for dismiss the ModalViewController. 
-(void)closeAction 
{ 
    [[self navigationController] dismissModalViewControllerAnimated:YES]; 
} 

내 문제가 있습니다 ..의 dealloc 메소드가 나는 객체 할당, 누수 등의 메모리 문제 문제를 얻고 호출되지 않습니다이다

- (void)dealloc 
{ 

    [doctorList release]; 
    [myTableView release]; 
    [super dealloc]; 
} 
+0

귀하의 게시물을 수정하십시오

나는 같은 것을 의미한다. 이 코드는 현재 읽을 수 없습니다. –

+0

doctorListViewNavigationController는 어떻게 작성하고 있습니까? – xyzzycoder

답변

2

의 dealloc 메소드가 객체가 동일한 횟수로 발표 때 호출되는, 그것이 그대로 유지되었습니다. doctorListView ...를 navigationController에 추가하면 (컨트롤러라고 부름) 컨트롤러는 뷰를 유지합니다. 그리고 그것은 또한 창조 동안에 유지되었습니다. 그래서이보기를 두 번 공개해야합니다 : dismissModalView ... 한 번, 직접 출시 한 번.

[[self navigationController] presentModalViewController:doctorListViewNavigationController animated:YES]; 
    [doctorListViewNavigationController release]; // first time 

... 

- (void)closeAction { 
    [[self navigationController] dismissModalViewControllerAnimated:YES]; 
       // second time 
} 
+0

예 : doctorListViewNavigationController를 이미 소유하고있는 경우 (예 : ) MYDoctorListViewNavigationController * doctorListViewNavigationController = [[doctorListViewNavigationController alloc] initWithNibname : @ "something"bunlde : nil];'(틀림없이, 가능성이있는 경우지만, 지적하는 것이 좋으며, 질문자가 잘못 된 것처럼 보입니다.) –

+0

답장을 보내 주셔서 감사합니다. 내 문제를 이해하기 위해 더 명확하게 편집했습니다. –

+0

닫기 작업은 다른보기, 즉 DoctorListView에있는 경우 어떻게 다시 릴리스 할 수 있습니까? –

관련 문제