我有一個帶有UIView的XIB。 此UIView與UIView - Page1的自定義類關聯(在IB中)。 文件的所有者是MainMenuController(當然是UIViewController)。 當init控制器使用「initWithNibName」並將其添加到navController.viewControllers中時,我使用此XIB。當我使用「layoutSubviews」或「didMoveToSuperview」時,請勿調用「dealloc」方法
在Page1.m我寫:
- (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塊中的行,並且全部都正常。 爲什麼?
感謝您的幫助! – 2011-05-04 11:24:38