结构和类中的属性观察器

物业观察员要点:

  1. 它应该是可变的,即用var not let关键字声明的属性Observer。
  2. 它监视属性的值。

让我们从一个例子开始

示例1.0(类)

didSet块被调用了多少次?

在开始进一步阅读之前,请花一些时间。……🤔

类是引用类型。 因此它可以是可变的。 这意味着只要您更改class属性,它就会在相同的内存位置中更新其值。

让我们通过图表可视化

当我们创建了Employee类的变量employee时。 此处为员工变量分配了内存,即位置:2047。该内存保存Employee结构基地址的值,即2048。因此,每当员工变量的值更改时,didSet都会阻止观察者更改

输出 :它将打印didSet块1次。

示例2(结构)

在Swift中,结构是值类型,而不是类的引用类型。 因此,struct是不可变的。

这意味着每当您更改struct属性时,都会创建一个新的struct对象,当前对象数据将被复制到新的struct对象中,但更改后的属性将包含新的值集。

让我们从一个例子开始

didSet块被调用了多少次?

在开始进一步阅读之前,请花一些时间。……🤔

为什么每次更改struct属性时都会调用观察者?.🤔

因为当分配struct变量(即stud)时。 它指向学生结构的基址,即2048。无论何时我们修改了图钉属性系统,都将创建新的学生结构副本。 最终,一个可变的螺柱保存着新创建的学生结构的地址。

因此可变螺柱值被修改。 因此,每次都会调用属性Observer didSet。

让我们想象一下

输出 :它将打印didSet块3次。

如果您喜欢这篇文章,请分享并给予鼓掌,以便其他人可以找到👏👏

您可以在Medium上关注我以获取更新的文章。 另外,请通过LinkedIn Twitter与我联系。

如果您有任何评论,问题或建议,请随时在下面的评论部分中发布它们!👇