taylor rain presidente president mind fire cónyuge carolina canciones and swift

swift - rain - james taylor president



¿Cuál es la diferencia entre "?" Y "!" En Swift? (3)

Cuando estas usando ! y la variable es nil , generará un error de tiempo de ejecución, pero si se usa ? fallará con gracia. Más información detallada en el documento de Apple.

Yo se que "?" y "!" Significa cuando declaro variables en Swift. Pero, ¿qué significan al usar estas variables? Por ejemplo, en este código:

var attachment: NSTextAttachment = NSTextAttachment() attachment.image = UIImage(named: "placeholder.png") attachment.image!.size ... // or attachment.image?.size ...

¿Cuál es la diferencia entre attachment.image!.size y attachment.image?.size ?


Use attachment.image!.size si tiene garantizada esa image? no es nil Si estás equivocado (y es nil ) tu aplicación se bloqueará. Esto se llama desenvolvimiento forzado .

Si no estás seguro de que no será nil , usa la image? .

En tu caso la image! está bien, ya que controlas si existe placeholder.png .

Lea toda la documentación en Swift Optionals . Es una parte básica y fundamental del lenguaje.


que es ! y?:

  • Utilizar ? si el valor puede volverse nulo en el futuro, haga una prueba para esto.
  • Utilizar ! si realmente no debería volverse nulo en el futuro, pero inicialmente debe ser nulo.

Si está utilizando attachment.image!.size cualquier variable con! Significa que el compilador no se preocupa por que la variable tenga algún valor o nil . Va a tomar medidas adicionales, aquí intentará obtener el tamaño de la imagen. Si attachment.image es nil , la aplicación se bloqueará aquí.

Mientras, attachment.image?.size , esto se asegurará de que, si attachment.image no es nulo, se llevarán a cabo más acciones, de lo contrario, pero confirma que la aplicación no se bloqueará en caso de que el valor de la image nil .

Resumen:

Deberíamos usar!, Cuando nos aseguramos de que la variable de tipo de opción tenga un valor a la vez y tengamos que tomar medidas adicionales, de lo contrario.