¿Por qué se necesitan los opcionales de extracción implícita (Implicitly Unwrapped Optionals) si ya estamos seguros de que hay un valor?
¡Hola! Acabo de empezar a aprender Swift y no logro entender una cosa. En la documentación se dice que los Implicitly Unwrapped Optionals (IUO) son opcionales que se extraen automáticamente al usarlos, si estamos seguros de que definitivamente tienen un valor. Pero entonces, ¿para qué sirven? ¿Por qué no usar simplemente un tipo normal (String, Int, etc.), ya que estamos seguros de que hay un valor?
Aquí hay un ejemplo que encontré en un libro:
```swift
let assumedString: String! = "Hello, world!"
let implicitString: String = assumedString // se extrae automáticamente
```
Pero si estoy seguro de que hay una cadena, ¿por qué no escribir simplemente:
```swift
let assumedString: String = "Hello, world!"
```
¿Cuál es la diferencia? He oído que los IUO se usan para IBOutlet y en algunos otros casos, pero no entiendo por qué no se pueden usar opcionales normales con comprobaciones mediante `if let` o `guard let`. ¿No es eso más seguro? ¿Podrían explicarme con ejemplos reales cuándo son realmente necesarios los IUO y en qué se diferencian?