我正在制作一个演示以了解 @IBInspectable 的工作原理。
首先,我在 UIViewController 子类中创建了两个变量:
@IBInspectable var intTest:Int = 10
@IBInspectable var flag:Bool = false
这样它就会出现在情节提要中。之后,我在情节提要中更改这些变量的值:
然后,我尝试在“viewDidLoad()”方法中打印这些变量,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
print("intTest value: \(String(describing: intTest))")
print("flag value: \(String(describing: flag)))")
}
输出是:
intTest 值:90
标志值:真
它工作正常,除非我更改变量声明,例如,
@IBInspectable var intTest:Int? = 10
@IBInspectable var flag:Bool? = false
之后,我在情节提要中更改了与上面相同的值,但值没有更改。
输出是:
intTest 值:可选(10)
标志值:可选(假)
所以我的问题是,为什么当我将变量声明为可选时值没有更新?
另一件事是,当我将变量作为字符串时,值会更新。谁能帮我理解这个功能?