¿Por qué se necesitan los opcionales de desenvolvimiento implícito (Implicitly Unwrapped Optionals) si ya estamos seguros de que hay un valor?
¡Hola a todos! Acabo de empezar a aprender Swift y me atormenta una pregunta. Leo la documentación y me topé con algo llamado Implicitly Unwrapped Optionals (IUO) — opcionales de desenvolvimiento implícito. Se declaran con un signo de exclamación, por ejemplo:
```swift
var name: String! = "Alice"
```
Entiendo que es un opcional que se desenvuelve automáticamente al acceder a él, sin necesidad de escribir `if let` o `guard let`. Pero lo que no entiendo es: ¿para qué existe este tipo? Porque si estamos seguros de que hay un valor (eso sugiere el signo de exclamación), ¿por qué no usar simplemente un tipo no opcional normal, como `String`? ¿Cuál es la diferencia?
He oído que los IUO se usan a menudo en propiedades de UIKit, especialmente en storyboards, por ejemplo:
```swift
@IBOutlet weak var button: UIButton!
```
¿Por qué no se puede escribir simplemente `UIButton`? Porque el botón definitivamente estará si lo conectamos. ¿O es una magia relacionada con el ciclo de vida de la view? Explíquenme, por favor.