Avatar ·

Pourquoi utiliser des optionnels implicitement déballés (Implicitly Unwrapped Optionals) si nous sommes déjà sûrs qu'il y a une valeur ?

Bonjour à tous ! Je viens de commencer à apprendre Swift et une question me taraude. En lisant la documentation, je suis tombé sur une chose appelée Implicitly Unwrapped Optionals (IUO) — des optionnels implicitement déballés. Ils sont déclarés avec un point d'exclamation, par exemple : ```swift var name: String! = "Alice" ``` Je comprends que c'est un optionnel qui se déballé automatiquement lorsqu'on y accède, sans avoir besoin d'écrire `if let` ou `guard let`. Mais ce que je ne comprends pas, c'est : pourquoi un tel type est-il nécessaire ? Si nous sommes sûrs qu'il y a une valeur (c'est ce que suggère le point d'exclamation), pourquoi ne pas simplement utiliser un type non-optionnel ordinaire, comme `String` ? Quelle est la différence ? J'ai entendu dire que les IUO sont souvent utilisés dans les propriétés UIKit, en particulier dans les storyboards, par exemple : ```swift @IBOutlet weak var button: UIButton! ``` Pourquoi ne peut-on pas simplement écrire `UIButton` ? Après tout, le bouton sera bien présent si nous l'avons connecté. Ou est-ce une sorte de magie liée au cycle de vie de la vue ? Expliquez-moi, s'il vous plaît.