首页 > 解决方案 > swift - 隐式解包选项

问题描述

考虑以下陈述

var aString: String! = "this is a test string"

现在我们看到aString总是需要保存一个值“”或一些文本。那么将其设为隐式展开的可选选项有什么用。为什么它不能是一个简单的字符串,例如:

var aString: String = "this is a test string"

另外,我想了解隐式展开的选项存在的目的,而不是在IBOutlets.

换句话说,var当我们知道它总是有一些非 nil 值时,制作一个隐式展开的可选有什么好处,为什么我们不应该将它声明为一个 normal var

标签: iosswiftoptional

解决方案


这都与类初始化有关。

以 Outlets 为例,它们被强制解包,因为我们知道它们将在从 XIB 或 Storyboard 初始化之后保存一个值,但它们不会在类初始化之前设置。

一个强制解包的可选退出告诉编译器我有责任确保在调用它之前设置这个变量。

在您的示例中,我认为编写以下内容没有意义:

let aString: String! = "this is a test string"

它应该就像你写的那样:

let aString: String = "this is a test string"

更有意义的是:

var aString: String!

意味着你将拥有这个变量初始化的所有权(即确保它不是零)


推荐阅读