为什么在处理子类的成员之前调用超类的viewDidUnload?

时间:2011-03-29 21:26:34

标签: objective-c

我在其中一个Apple样本中看到了这段代码:

- (void)viewDidLoad {

    [super viewDidLoad];
    // Set the content size for the popover: there are just two rows in the table view, so set to rowHeight*2.
    self.contentSizeForViewInPopover = CGSizeMake(310.0, self.tableView.rowHeight*2.0);
}

-(void) viewDidUnload {
    [super viewDidUnload];

    self.splitViewController = nil;
    self.rootPopoverButtonItem = nil;
}

我来自C ++背景,所以(我认为),我习惯于在调用基类的卸载方法之前看到派生类的成员被处理。在这种情况下,事先调用super viewDidUnload的原因是什么,还是只是随意的?

1 个答案:

答案 0 :(得分:3)

在这种情况下,我认为这不重要。您只减少引用计数以释放您在viewDidLoad中创建的ibout或其他内容。基本上这只是baseclass中viewDidUnload代码的扩展,而不是覆盖或析构函数调用。

通常当您希望在执行子类中的方法时也执行基类代码时,除非有充分的理由不这样做,否则首先调用super方法。