Подтвердить что ты не робот

`[super viewDidLoad]` соглашение

Я вижу код примера с [super viewDidLoad], который вызывается перед вашей реализацией и после вашей реализации.

Я знаю, что вам не всегда нужно называть супер (как видно из многих других обсуждений). Когда вы его вызываете, ожидаются ли они до или после кода?

Это может иметь последствия в зависимости от того, что делает супер-реализация. Хотя вам не нужно знать супер-реализацию, чтобы писать ваши.

Конечно, это касается всех методов делегирования UIViewControllers (willAppear, didAppear и т.д.)

Любые мысли?

4b9b3361

Ответ 1

Мое правило: если вы делаете что-то, связанное с инициализацией, сначала вызывайте метод супер класса (если вы его вообще назовёте). Это дает суперклассу возможность сделать любую настройку, на которую вы можете полагаться позже в своем методе. Если вы делаете что-то, связанное с уничтожением, вызовите метод суперкласса последним. Это гарантирует, что вы можете полагаться на состояние объекта во время выполнения вашего метода. Наконец, возьмите любой другой случай в каждом конкретном случае. Например, если вы обрабатываете событие, вы, вероятно, хотите сначала разобраться с событием и только вызвать метод суперкласса, если вы решили не обрабатывать событие, или если вы каким-то образом его изменили и хотите передать его по событию цепь.

Ответ 2

Допустим, у вас есть 2 класса, родитель и ребенок. Ребенок наследует от родителя. У них есть метод greet, который возвращает строку.

Вот как выглядит родительский метод:

код:

-(NSString *)greet {
 return @"Hello";
}

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

Код://Наследует от родителя

-(NSString *)greet {
NSString *parentGreeting = [super greet];
return [parentGreeting stringByAppendingString:@", Mommy"]
}

Итак, теперь Parent приветствует "Hello", а Child приветствует "Hello, Mommy". Позже, если мы изменим родительский привет, чтобы вернуть только "Привет", тогда оба класса будут затронуты, и у вас будут "Привет" и "Привет, мама".

super используется для вызова метода, определенного суперклассом. Он используется для доступа к методам, которые были переопределены подклассами, чтобы класс мог обернуть свой собственный код вокруг метода, который реализует его родительский класс. Это очень удобно, если вы вообще занимаетесь каким-либо наследованием.