2017-02-27 1 views
-2

Je suis un exercice d'un livre et nous construisons les contrôleurs de vue par programme et créer des tests unitaires. Le livre dit aussi ceci et de l'expérience précédente en lisant des documents de référence d'Apple, les références d'Apple indiquent toujours de ne pas invoquer viewDidLoad, viewWillAppear, viewDidDisappear, etc. directement. Je suis curieux de savoir pourquoi cela se passe et que se passe-t-il si nous le faisons?Pourquoi Apple nous recommande-t-il de ne pas invoquer viewWillLoad, viewWillAppear, viewDidDisappear, etc.?

+3

Lisez la documentation de ces méthodes. Lisez à propos du cycle de vie d'un contrôleur de vue. Ils sont appelés par le cadre. Ils ne sont pas destinés à être appelés directement. – rmaddy

+3

Ce n'est pas une recommandation. C'est une loi. – matt

+1

Il existe une théorie qui stipule que si jamais quelqu'un invoque viewWillAppear directement, l'Univers disparaîtra instantanément et sera remplacé par quelque chose d'encore plus bizarre et inexplicable. –

Répondre

4

viewDidLoad, viewWillAppear, viewDidDisappear et ainsi de suite sont la voie de l'exécution de vous faire savoir que certaines choses importantes se produisent:

  • viewDidLoad, le contrôleur de vue vient d'obtenir son point de vue

  • viewWillAppear , la vue du contrôleur de vue est sur le point d'être placée dans l'interface

  • viewDidDisappear, la vue du contrôleur de vue est sur le point d'être retiré de l'interface

Ce sont des événements que le temps d'exécution est responsable, et il vous envoie des messages à vous faire savoir qu'ils se produisent afin que vous puissiez répondre, si vous le souhaitez, au moment approprié.

Il n'y aurait aucun sens pour vous les appeler, parce que vous ne savez pas quand ces choses se produisent (sauf dans la mesure où l'exécution les appelle)! Si vous les appeliez à un moment quelconque, vous mentiriez, par ex. disant que la vue vient de charger quand en fait il a pas juste chargé, et donc vous casser votre propre code ou pire.