初始化 CGSize

时间:2021-03-13 03:01:00

标签: swift

我正在以两种不同的方式定义然后初始化一个可选的 CGSize 类型值,我希望在这两种情况下我都应该有一个可选的大小,但奇怪的是,即使在输入宽度和高度之后,在方式 1 中,该值也是还是零!我在这里遗漏了什么吗?

var value1: CGSize? = nil
value1?.width = 100.0
value1?.height = 100.0
print(value1)                                   // print: nil


var value2: CGSize? = nil
value2 = CGSize(width: 100.0, height: 100.0)
print(value2)                                  // print: Optional((100.0, 100.0))

2 个答案:

答案 0 :(得分:2)

它完全按照你的要求去做。
您从未初始化值 1,因此您的可选链接失败。

如果你想设置宽度和高度并获得一个 CGSize,你需要初始化它然后设置它的值:

var value3: CGSize? = nil
value3 = CGSize()
value3?.width = 100.0
value3?.height = 100.0
print(value3)       //Optional((100.0, 100.0))

答案 1 :(得分:1)

让我们回顾一下第一个例子:

var value1: CGSize? = nil

好的,所以 value1 当前为零。


value1?.width = 100.0

您对 ? 执行的操作称为 optional chaining。这使得如果 value1not nil,则将 width 设置为 100。

但是 value1 仍然为零。


value1?.height = 100.0

这里也一样。它仍然为零,所以它也没有设置 height


print(value1)

value1 仍然为零,因此打印 nil