Self or not self ?

Hello,

Il y a peut-être quelque chose que j’ai mal compris, mais je ne sais jamais vraiment quand je dois mettre self.uilabel.text par exemple ou uilabel.text.

Ma question est plus générale que les Outlets, elle se pose aussi pour les variables.

Si vous savez m’expliquer quand mettre ou ne pas mettre self, ça serait cool :slight_smile:

Merci.

En fait le self fait référence à l’objet en train d’exécuter la fonction dans laquelle tu es.
Donc pour tes outlets, le self fait référence à ton ViewController.
Le fait de mettre ou pas les self avant chaque membre de tes objets (outlets, variables, fonctions, etc.) dépend de ta préférence perso. Ce n’est pas obligatoire car le compilateur peut deviner que tu fais référence à un membre de cet objet mais ça aide souvent à la lisibilité.

Il y a 2 cas où c’est obligatoire :

  • Dans une closure
  • Si tu as une variable locale qui a le même nom que la variable membre de ta classe

Dans le second cas, si tu n’utilises pas le self il prendra la variable locale en priorité, en revanche si tu précise explicitement le self.taVariable alors il choisira celle membre.
Exemple :

class Demo {
    var a = 10
    func f1() {
       let a = 20
       print (a)
       print (self.a)
}

L’affichage de f1() sera 20 puis 10.

Merci @mbritto,

Je comprends mieux maintenant.
Donc comme je soigne toujours le fait de ne pas appeler deux variables avec le même nom dans un même fichier, je dois pouvoir me passer du self. A part dans les closures donc :slight_smile: