Quelle est la différence entre "?" Et "!" Dans Swift?
Je sais ce que "?" et "!" veux dire quand je déclarer les variables en Swift. Mais que veulent-ils dire quand à l'aide de ces variables? Par exemple, dans ce code:
var attachment: NSTextAttachment = NSTextAttachment()
attachment.image = UIImage(named: "placeholder.png")
attachment.image!.size ... // or attachment.image?.size ...
Quelle est la différence entre attachment.image!.size
et attachment.image?.size
?
source d'informationauteur Aryan
Vous devez vous connecter pour publier un commentaire.
Utilisation
attachment.image!.size
si vous avez la garantie queimage?
n'est pasnil
. Si vous êtes mal (et c'estnil
) de votre application crash. Ceci est appelé forcé de déballage de.Si vous êtes pas sûr il ne sera pas
nil
utilisezimage?
.Dans votre cas
image!
est OK, puisque vous contrôler siplaceholder.png
existe.Lire tous les documents sur Swift Options. C'est une base et la partie fondamentale de la langue.
ce que c'est ! et ?:
c'.
mais il doit être nul initialement.
si Vous utilisez
attachment.image!.size
toute variable avec ! moyens, le compilateur ne vous préoccupez pas de cette variable a une valeur ou d'unenil
.il va prendre des mesures plus loin, il va ici essayer d'obtenir la taille de l'image. si
attachment.image
estnil
puis app sera crash ici.Tout,
attachment.image?.size
ce sera assurez-vous, siattachment.image
n'est pas nul, donc la poursuite de l'action aura lieu, Mais sinon il confirmer l'Application ne sera pas de crash en cas denil
valeur deimage
.Résumé:
Nous devrions avoir à utiliser !, lorsque nous assurez-vous que l'option variable de type a de la valeur à un moment et nous devons agir davantage, Sinon.
Lorsque vous utilisez
!
et la variable estnil
il sera le déclencheur d'erreur d'exécution, mais si l'utilisation?
il échouera avec élégance.Plus d'informations dans le apple document