Swift “和”的区别是什么&引用;及"!&引用;斯威夫特?
当我在Swift中声明变量时,我知道“?”和“!”是什么意思。但当使用这些变量时,它们意味着什么?例如,在此代码中:Swift “和”的区别是什么&引用;及"!&引用;斯威夫特?,swift,Swift,当我在Swift中声明变量时,我知道“?”和“!”是什么意思。但当使用这些变量时,它们意味着什么?例如,在此代码中: var attachment: NSTextAttachment = NSTextAttachment() attachment.image = UIImage(named: "placeholder.png") attachment.image!.size ... // or attachment.image?.size ... attachment.image!。大小和附件
var attachment: NSTextAttachment = NSTextAttachment()
attachment.image = UIImage(named: "placeholder.png")
attachment.image!.size ... // or attachment.image?.size ...
attachment.image!。大小
和附件.image?大小
?使用附件.image!。大小
如果保证图像?
不是零
。如果你错了(而且是nil
),你的应用程序将崩溃。这称为强制展开
如果您不确定它是否为nil
,请使用image?
在你的情况下,image
可以,因为您可以控制是否存在placeholder.png
阅读上的所有文档。它是语言的基本组成部分。什么是语言!和?:
- 使用?如果该值将来可以变为零,那么您可以测试 这个李>
- 使用!如果将来真的不应该变成零, 但一开始它必须是零
attachment.image!。大小
任何带有的变量!也就是说,编译器不必担心变量有任何值或nil
。
它将进一步采取行动,它将在这里尝试获得图像的大小。如果attachment.image
为nil
,则应用程序将在此崩溃
而,attachment.image?.size
,这将确保您,如果attachment.image
不是零,则将执行进一步的操作,否则,它将确认应用程序不会在image
的nil
值的情况下崩溃
摘要:
我们必须使用!,当我们确保选项类型变量一次有值时,我们需要对其采取进一步的操作,否则。当您使用
时代码>且变量为nil
它将触发运行时错误,但如果使用?
它将正常失败。
更多详细信息请参见两个符号!然后呢?用于可选。我们必须使用!,当我们确保选项类型变量一次有值时,我们需要对其采取措施。否则,如果变量值为nil,它将崩溃。如果您使用的是?,则应用程序在nil情况下不会崩溃
您可以通过此链接了解更多信息:-