通常,当我使用viewcontroller时,会将当前viewcontroller推开,我使用UINavigationController并push/pop新viewcontrollers并让它们自己处理所有的dealloc。通过addSubiew添加的子视图viewcontroller是否需要dealloc?
但是,例如,在这种情况下,我有一个MainViewController,它是应用程序启动时的默认视图。我有第二个视图,称为SecondaryViewController,它是主屏幕上的弹出窗口(有点像lightbox)。
下面是代码来说明:
//From within mainViewController:
secondaryViewController = [SecondaryViewController alloc] initWithNibName:@"SecondaryViewController" bundle:nil];
[self.view addSubview:secondaryViewController.view];
的secondaryViewController界面看起来是这样的:
//interface
@interface SecondaryViewController : UIViewController
{
IBOutlet UILabel *httpLabel;
IBOutlet UIScrollView *scrollView;
}
@property(retain, nonatomic) IBOutlet UILabel *httpLabel;
@property(retain, nonatomic) IBOutlet UIScrollView *scrollView;
至于实施,我有@synthesize
为@property
实例变量,但我不做任何手动分配。然而,我没有把dealloc方法:
- (void)dealloc
{
[httpLabel release];
[scrollView release];
[super dealloc];
}
但我不知道我需要上述。
所以我的问题是以下几点:
1)我需要在这种情况下,上述dealloc方法?或者更一般地说,子视图何时需要一个dealloc方法?
2)如果我做或不需要它,取决于我是否通过addSubview或pushViewController添加secondaryViewController?举例来说,如果我想更换整个mainViewController,与此:
[self.navigationController pushViewController:secondaryViewController animated:NO]
请问secondaryViewController需要一个dealloc方法?
谢谢!
谢谢。然而,我的问题是,我是否需要在secondaryViewController中使用dealloc()方法。 – kurisukun 2012-02-13 01:15:11