UIView가있는 XIB가 있습니다. 이 UIView는 (IB에서) UIView - Page1의 사용자 지정 클래스와 연결됩니다. File의 소유자는 MainMenuController입니다 (UIViewController, 물론). "initWithNibName"으로 init 컨트롤러를 만들 때이 XIB를 사용하고 navController.viewControllers에 추가합니다. Page1.m에서"layoutSubviews"또는 "didMoveToSuperview"를 사용할 때 "dealloc"메서드를 호출하지 마십시오
내가 쓰기 :
- (void)didMoveToSuperview
{
NSLog(@"Page 1 did move to superview");
mainTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(refreshDateAndTime) userInfo:nil repeats:YES];
}
-(void) refreshDateAndTime {
NSLog(@"second");
}
- (void)dealloc
{
NSLog(@"Page1 dealloc called");
[mainTimer invalidate];
mainTimer = nil;
[mainTimer release];
[super dealloc];
}
가이 코드에 의해 타이머 "mainTimer"를 시작하면 방법 "의 dealloc은"호출되지 및 개체가 실행되고 메모리와 타이머에서 언로드되지 않습니다. "didMoveToSuperview"블록에서 dealloc이라는 줄을 주석 처리하면 모두 괜찮습니다. 왜?
도움을 주셔서 감사합니다! –