52 votes

Dois-je toujours appeler [super viewDidLoad] dans la méthode -viewDidLoad?

Dans l'exemple ScrollView d'Apple, ils n'appellent pas cela. J'ai toujours pensé que c'était un must . Pourquoi devrais-je appeler quand même?

49voto

Caffeine Coma Points 10544

Si vous substituez la méthode, vous devez quand même appeler la méthode dans le super. Même si la super classe ne fait rien avec elle aujourd'hui, Apple pourrait un jour changer la mise en œuvre et votre code cesserait mystérieusement de fonctionner. Si vous n'avez vraiment pas besoin de faire quoi que ce soit avec cette méthode, laissez-le en dehors de votre code, et la méthode de super fonctionnera comme d'habitude, sans aucune intervention de votre part.

29voto

Steven Fisher Points 22249

Non, vous n'avez pas besoin de les appeler [super viewDidLoad]. Edit: Mais lire ci-dessous, parce que je pense que vous avez certainement doit.

Soyons réalistes ici: Apple ne va pas casser des milliers d'applications, y compris celles fondées sur leur publiés exemple de code, en décidant d'un événement qu'ils ne sont pas actuellement la manutention soudain besoin de faire quelque chose que les développeurs peuvent ou peuvent ne pas vouloir s'arrêter et il est essentiel que si vous n'avez pas besoin d'comportement différent vous arrêtez pas le cas.

Edit: après Avoir vu la façon dont Apple gère la compatibilité pour une année supplémentaire, je recommande d'apprendre et d'utiliser le bon modèle. Bien que je doute de votre application binaires jamais arrêter brusquement de travail, il est clair que l'iPhone détecte les SDK de votre binaire a été construit contre et modifie certains OS comportement sur cette base.

Apple pourrait un jour besoin d'un modèle particulier être suivie sur l'avenir du SDK. Ce ne serait pas vous affecter jusqu'à ce que vous reconstruire avec le dernier Xcode + SDK, mais alors il faudrait obtenir ces pauses, sans aucune modification du code source. D'apprendre et de suivre le modèle pour être sûr.

18voto

Paul Tomblin Points 83687

Comme Markus le dit, UIViewController ne fait rien dans sa méthode viewDidLoad, vous n'avez donc pas à l'appeler. Cependant, c'est une bonne habitude à prendre, au cas où vous modifieriez votre structure d'héritage et que soudainement, la classe qui héritait de UIViewController hérite désormais de quelque chose qui fait quelque chose dans la méthode viewDidLoad.

10voto

Daniel Points 1268

La documentation d'Apple pour viewDidLoad n'indique PAS que vous devriez appeler [super viewDidLoad], aussi j'irais avec ce que dit Apple. Notez cependant que pour d'autres méthodes similaires, telles que viewDidAppear, vous devez appeler [super viewDidAppear].

9voto

ullmark Points 1875

Vous n'êtes pas obligé d'appeler le [super viewDidLoad]

Autant que je sache, viewDidLoad dans la super-classe (UIViewController) est uniquement une fonction vide appelée lorsque le ViewController est initialisé avec un fichier nib.

Ainsi, si vous devez effectuer une initialisation, vous devez remplacer cette fonction et y placer votre code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X