Swift 4中的属性观察器didSet和willSet
在本文中,我们将研究快速的属性观察器。 根据Apple的文档:
财产观察员观察并响应财产价值的变化。 每次设置属性值时都会调用属性观察器,即使新值与属性的当前值相同也是如此 。
让我们看一下下面的代码片段,以帮助我们更好地了解属性观察者willSet和didSet的工作方式。
从上面的屏幕截图可以看出,在设置person属性之前,将首先调用willSet中的代码。 在设置person属性后, didSet将立即被调用。 这就是为什么我们可以访问didSet中的person属性, 而这在willSet中是不可能的。
同样从代码中,您可以看到我在willSet观察器中使用了自定义参数名称。 您可以随意使用自己的自定义参数名称覆盖默认参数名称。
关于属性观察器的另一件事要注意的是:不能在惰性变量上使用属性观察器,因为只有在程序中调用了惰性变量后 , 惰性变量才能正确初始化并分配给内存。 示例如下所示:
惰性变量名称=“约翰”
print(“我的名字是\(名字)”)
仅在上面的print语句中调用了变量名后,该变量名才会得到正确的初始化和分配的内存。
这违反了属性观察者的目的,因为具有观察者的属性需要具有初始值 。 每当属性值更改时,这将使它能够跟踪更改。
当您必须跟踪属性以确定值何时更改以执行某些逻辑时,就需要属性观察器 。 因此,您可以将其抽象为willSet和,而不是使用某些函数来检查属性的值以执行某些操作。 当值设置为所需值时,让它执行逻辑。
相信阅读完本文后,您现在对Swift中的属性观察器如何工作有了更好的了解。 感谢您的阅读,并随时在下面提出任何意见或问题,我将为他们解答。