web-dev-qa-db-fra.com

convention `[super viewDidLoad]`

Je vois un exemple de code avec [super viewDidLoad] appelé avant votre implémentation et après votre implémentation.

Je sais que vous n’avez pas toujours à appeler super (comme dans beaucoup d’autres discussions). Lorsque vous appelez, est-ce attendu avant ou après le code? 

Cela pourrait avoir des conséquences en fonction de la mise en œuvre de super. Bien que vous ne devriez pas avoir à connaître l'implémentation de super pour écrire la vôtre.

Bien sûr, cela vaut pour toutes les méthodes de délégation UIViewControllers (willAppear, didAppear, etc ...)

Des pensées?

60
Corey Floyd

Ma règle générale est la suivante: si vous faites quelque chose lié à l'initialisation, appelez toujours d'abord la méthode de la super classe (si vous allez l'appeler du tout). Cela donne à la super classe une chance de faire n'importe quelle configuration sur laquelle vous pourrez compter plus tard dans votre méthode. Si vous faites quelque chose lié à la destruction, appelez la méthode de la super classe en dernier. Cela garantit que vous pouvez compter sur l'état de l'objet tout au long de l'exécution de votre méthode. Enfin, prenez tout autre cas au cas par cas. Par exemple, si vous gérez un événement, vous voudrez probablement d'abord le traiter, et n'appeler la méthode de la super-classe que si vous avez choisi de ne pas gérer l'événement ou si vous l'avez modifié et que vous souhaitez le transmettre à l'événement. chaîne.

95
Jason Coco

Disons que vous avez 2 cours, un parent et un enfant. L'enfant hérite du parent. Ils ont une méthode appelée saluer qui retourne une chaîne.

Voici à quoi ressemble la méthode parente:

Code:

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

Nous voulons que l'enfant apprenne de ses parents. Nous utilisons donc super pour dire saluer comment Maman saluerait, mais avec nos propres petits ajouts aussi.

Code: // hérite du parent

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

Alors maintenant, le parent salue "Bonjour", et l'enfant salue "Bonjour, maman". Plus tard, si nous modifions le message d'accueil du parent pour qu'il ne renvoie que "Salut", les deux classes seront affectées et vous obtiendrez "Salut" et "Salut, maman".

super est utilisé pour appeler une méthode telle que définie par une superclasse. Il est utilisé pour accéder aux méthodes qui ont été remplacées par des sous-classes afin que la classe puisse envelopper son propre code autour d'une méthode implémentée par sa classe parente. C'est très pratique si vous faites un héritage quelconque. 

0
suthar