navigationController의 신비를 이해하도록 도와주세요. didFinishLaunchingWithOptions에서 호출되는 HomeViewController가 있습니다. HomeViewController 사용자 프레스에서 버튼과 내 코드는 내가navigationController 팝업 후 계속 실행
-(IBAction)goBackToHome:(id)sender
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.navigationController popViewControllerAnimated:YES];
}
내가 한 번 내가 MapViewController에서 나는 인상했다 코드를 사용
-(IBAction)showMap:(id)sender
{
MapViewController *mapViewController = Nil;
mapViewController = [[MapViewController alloc] initWithNibName:@"MapView-iPad" bundle:nil];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.navigationController pushViewController:mapViewController animated:YES];
}
는 사용자가 다시 MapViewController에서 가고 싶어 할 때입니다, MapViewController와 관련된 모든 리소스가 해제됩니다. 이 코드를 MapViewController의 initWithNibName 안에 넣었는지 확인하려면.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(printMessage) userInfo:nil repeats:YES];
}
return self;
}
-(void) printMessage
{
NSLog(@"I am inside Map View Controller");
}
놀랍게도 MapViewController를 터뜨린 후에도 printMessage는 계속 진행됩니다. 진행중인 작업과 MapViewController가 아직 실행중인 이유를 이해해주세요. MapViewController가 해제되었는지 확인할 수있는 방법이 있습니까?
, 수 있도록 사용 : [self.navigationController popViewControllerAnimated : YES]; 시도해보십시오. – crz
dealloc을 구현하고 로그를 넣음으로써 할당 해제 시점을 확인할 수 있습니다. – rdelmar
@ user1191140 : 답변 중 하나가 도움이 되었다면 동의하십시오. 그렇지 않으면 설명을 요청하십시오. [누군가 내 질문에 대답하면 어떻게해야합니까?]] (http://stackoverflow.com/help/someone-answers) – Sebastian