“ convenção

Eu vejo um código de exemplo com [super viewDidLoad] chamado antes de sua implementação e após sua implementação.

Eu sei que você nem sempre tem que chamar super (como visto em muitas outras discussões). Quando você liga, espera-se antes ou depois do código?

Isso pode ter consequências dependendo da implementação do super. Embora você não deva ter que saber a implementação do super para escrever a sua.

Claro que isso vale para todos os methods delegates do UIViewControllers (willAppear, didAppear, etc …)

Alguma ideia?

Minha regra é: se você está fazendo algo relacionado à boot, sempre chame o método da superclass primeiro (se você for ligar para ele). Isso dá à superclass a chance de fazer qualquer configuração que você possa confiar mais tarde no seu método. Se você está fazendo algo relacionado à destruição, chame o método da superclass por último. Isso garante que você possa confiar no estado do object durante a execução do seu método. Finalmente, tome qualquer outro caso, caso a caso. Por exemplo, se você está lidando com um evento, você provavelmente vai querer lidar com o evento primeiro, e só invocar o método da superclass se você escolheu não lidar com o evento ou se você de alguma forma o alterou e quer passar no evento cadeia.

Vamos dizer que você tem 2 classs, um pai e uma criança. Filho herda do pai. Eles têm um método chamado greet que retorna uma string.

Aqui está o que o método pai se parece com:

Código:

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

Queremos que a criança aprenda com os pais dele. Então, usamos super para dizer como a mamãe cumprimentaria, mas com nossas pequenas adições também.

Código: // Inherits from Parent

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

Então agora Pai cumprimenta “Olá”, e o Filho cumprimenta “Olá, mamãe”. Mais tarde, se alterarmos a saudação do pai para retornar apenas “Hi”, as duas classs serão afetadas e você terá “Hi” e “Hi, Mommy”.

super é usado para chamar um método como definido por uma superclass. Ele é usado para acessar methods que foram substituídos por subclasss para que a class possa envolver seu próprio código em torno de um método implementado pela class pai. É muito útil se você está fazendo algum tipo de inheritance.