2011-03-29 70 views
2

我看到這個代碼在蘋果樣品之一:爲什麼在處理子類的成員之前調用超類的viewDidUnload?

- (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的原因是什麼,還是僅僅是任意的?

回答

3

我不認爲這真的很重要。您只會減少引用計數以釋放您在viewDidLoad中創建的iboutlet或其他內容。基本上,這只是基類中viewDidUnload代碼的擴展,而不是重寫或析構函數調用。

通常,當你希望在執行子類中的方法時也要執行基類代碼時,你首先需要調用super方法,除非有充分的理由不這樣做。

相關問題