При программировании iOS ViewControllers вы должны вызывать методы родительского класса до или после собственного кода? - PullRequest
1 голос
/ 26 сентября 2010

Новый iOS ViewController, созданный из шаблона, содержит несколько «шаблонных» методов, которые вызывают методы их родительского класса.

-(void) viewDidLoad {
        [super viewDidLoad];
}

- (void) viewDidUnload {
        [super viewDidUnload];
}

- (void) dealloc {
        [super dealloc];
}

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

- (void) viewDidLoad {
        // Should I put my code here?
        [super viewDidLoad];
        // Or here?
}

Ответы [ 2 ]

3 голосов
/ 26 сентября 2010

Это применимо для всех ООП в целом.В конструкторе (и в других методах тоже) вы должны вызывать конструктор родителя перед вашим кодом.Причина в том, что ваш код может потребовать некоторой инициализации, которая обрабатывается в parent, то есть инициализация базы должна идти до инициализации производного класса.В деструкторе вы должны делать обратное, то есть освобождение ресурсов производного класса должно идти раньше, чем освобождение ресурсов базы.Причина проста.Ресурс производного класса может зависеть от ресурса базы.Если вы освободите ресурс базы раньше, тогда могут возникнуть проблемы.

Это идеальный случай.Во многих случаях вы можете не видеть никакой разницы, но если есть зависимость, как описано выше, то у вас будут проблемы.Поэтому вы должны следовать стандарту, вызывать метод базового класса перед тем, как ваш код, а в dealloc сделать наоборот.

3 голосов
/ 26 сентября 2010

В viewDidLoad (и вообще) вы должны идти после того, как вызывается метод load для родительского класса

В dealloc вы должны идти до

...