Почему viewDidUnload суперкласса вызывается перед обработкой членов подкласса? - PullRequest
2 голосов
/ 30 марта 2011

Я вижу этот код в одном из примеров 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 Ответ

3 голосов
/ 30 марта 2011

Я не думаю, что это действительно имеет значение в этом случае. Вы только уменьшаете количество ссылок на бесплатные iboutlets или другие вещи, которые вы создали в viewDidLoad. По сути, это просто расширение кода viewDidUnload в базовом классе, а не переопределение или вызов деструктора.

Обычно, когда вы хотите, чтобы код базового класса выполнялся также при выполнении методов в подклассе, сначала вызывается метод super, если только для этого нет веской причины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...