Какая правильная секвенция для вызова [super viewWillAppear] [super viewDidLoad] и т.д.?

При предоставлении реализации viewWillAppear, viewDidLoad, viewDidAppear, loadView и т.д.

Должны ли вызовы соответствующих методов суперкласса выполняться до или после выполнения пользовательских действий?

Каковы возможные последствия, если они выполняются в неправильном порядке?

то есть.

должно быть:

- (void)viewWillAppear:(BOOL)animated
{    
    [super viewWillAppear:animated];
    stuff
}

или

- (void)viewWillAppear:(BOOL)animated
{    
    stuff
    [super viewWillAppear:animated];
}

и др.

Ответ 1

Для подавляющего большинства вещей, которые вы хотели бы сделать, это не будет иметь никакого значения. Удобно сначала поместить вызов в "супер", потому что тогда легко проверить позже, убедитесь, что вы вызываете супер. Документация Apple просто заявляет, что "вы должны назвать super в какой-то момент вашей реализации".

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