Swift 4中的属性观察器didSet和willSet

在本文中,我们将研究快速的属性观察器。 根据Apple的文档:

财产观察员观察并响应财产价值的变化。 每次设置属性值时都会调用属性观察器,即使新值与属性的当前值相同也是如此

让我们看一下下面的代码片段,以帮助我们更好地了解属性观察者willSetdidSet的工作方式。

从上面的屏幕截图可以看出,在设置person属性之前,将首先调用willSet中的代码。 在设置person属性后, didSet将立即被调用。 这就是为什么我们可以访问didSet中person属性, 这在willSet中是不可能的。

同样从代码中,您可以看到我在willSet观察器中使用了自定义参数名称。 您可以随意使用自己的自定义参数名称覆盖默认参数名称。

关于属性观察器的另一件事要注意的是:不能在惰性变量上使用属性观察器,因为只有在程序中调用了惰性变量后惰性变量才能正确初始化并分配给内存。 示例如下所示:

 惰性变量名称=“约翰” 
print(“我的名字是\(名字)”)

仅在上面的print语句中调用了变量名后,该变量名才会得到正确的初始化和分配的内存。

这违反了属性观察者的目的,因为具有观察者的属性需要具有初始值 。 每当属性值更改时,这将使它能够跟踪更改。

当您必须跟踪属性以确定值何时更改以执行某些逻辑时,就需要属性观察器 。 因此,您可以将其抽象为willSet和,而不是使用某些函数来检查属性的值以执行某些操作。 当值设置为所需值时,让它执行逻辑。

相信阅读完本文后,您现在对Swift中的属性观察器如何工作有了更好的了解。 感谢您的阅读,并随时在下面提出任何意见或问题,我将为他们解答。