¿Por qué usarías 'init!' En lugar de 'init? `Al implementar un Inicializador Failable en Swift?

La documentación de SwiftInicialización: inicializadores fallidos detalla cómo usarinit? para crear un inicializador disponible, que es un inicializador que devuelve unOpcional del tipo que inicializa. Como con todos los opcionales, podría sernil o nonil.

Los documentos también mencionan que puedes usarinit! para crear un inicializador fallable, que devuelve unimplícitamente desenvuelto opcional del tipo que inicializa (ver elEl init! Inicializador fallido sección). Esto desenvuelve lo opcional e indica que "debería" ser nonil. Si esto esnil y accedió a él sin verificar, algo que un programador puede omitir ya que está marcado como "no debería sernil", se generará un error de tiempo de ejecución.

Dos preguntas:

Cuándo / por qué usaríasinit! en lugar deinit? al implementar un inicializador fallable?Ya queinit! siempre devuelve una opción implícitamente desenvuelta que "debería" ser nonil, ¿por qué no usaríasinit en lugar deinit!?

Respuestas a la pregunta(3)

Su respuesta a la pregunta