Création d'un objet de type UIViewController

Bonjour à tous.

Je termine le chapitre 6.2 “Notions de Swift”, consacré au principe de Classes et d’héritages.

Les choses me semblent très claire dans le playground.

La Classe “chat” hérite de la Classe “animal” est on crée un objet de type chat en faisant un appel de ce type : let isodore = Chat()

C’est uniquement quand l’objet est créé que effectivement les choses sérieuses peuvent se passer, une Classe n’étant qu’une déclaration, dans laquelle “rien” ne se passe. Quelque chose come isodore.direBonjour() est maintenant possible et a du sens.

Clair.

D’un autre coté, dans du code réel, tout commence par ceci

class ViewController: UIViewController { … }

ViewController est une classe dérivée du UIViewController et on y ajoute ce que l’on veut. Des fonctions appelées quand on touche un bouton par exemple.

Par contre je me serais attendu a voir un moment quelque chose comme :

let MonViewController = ViewController()

pour créer l’objet correspondant à la classe. Mais non, rien de cela. C’est implicite quelque part? Ou bien je mélange totalement des notions ?? Pire :slight_smile: : Tout le code se fait en fait à l’interieur de la classe ViewController, ce qui n’est pas directement ce à quoi je m’attendrais …

Merci !

Si je sujet est traité dans une lecon ultérieure, n’hésitez pas à m’y envoyer !

MARC

C’est une excellente question Marc et tu as très bien compris le principe, surtout quand tu dis :

En effet, on ne code que la classe, et si personne ne crée un objet (on parle aussi d’instance) à partir de cette classe alors rien ne ce passe. Sauf que dans le cas des ViewControllers, dans la plupart des cas ça n’est pas toi mais le système qui va créer tes objets à partir du Storyboard. La ligne de code que tu attendais existe bien, elle est juste dans le code de Apple que l’on ne peut pas voir (plus exactement elle est dans une des classes du Framework UIKit).

Ta responsabilité n’est donc pas de créer les objets de type ViewController mais de les faire se comporter correctement une fois qu’ils auront été instanciés par quelqu’un d’autre. Il y aura bien un objet au final et il va suivre ce que tu as codé dans la classe, c’est pour ça que tout le code se fait dans la classe ViewController

J’espère avoir pu éclaircir les choses :slight_smile:

Happy coding!

Merci Maxime ! C’est très clair.
Marc

1 J'aime