gpt4 book ai didi

ios - 当你可以改变一个变量并且值无论如何都会改变时,为什么要使用 didSet 呢?

转载 作者:搜寻专家 更新时间:2023-11-01 05:49:34 25 4
gpt4 key购买 nike

我通读了这个 SO didSet q&a和苹果的 Property Observers和其他一些帖子。我似乎无法理解的是,如果您在不使用属性观察器的情况下更改变量,它无论如何都会改变,那么在改变变量时使用 didSet 有什么好处?

场景 1:

var someVal = 0

someVal = 10

// someVal now holds 10

场景 2:

var someVal: Int = 0{

didSet{
}
}

someVal = 10

// again someVal now holds 10

场景 3:

var someVal: Int = 0{

didSet{

if someVal > oldValue{

someVal = newValue
}
}
}

someVal = 10

// once again someVal holds a value of 10

我在场景 3 中唯一看到的是,如果不满足条件,则 someVal 不会改变。但是我可以简单地这样做而不是将它添加到 didSet 中,并且会发生完全相同的事情。

var someVal = 0

var anotherVal = 10

if someVal < anotherValue{
someVal = anotherValue
}

// once again someVal holds a value of 10

那么除了在 didSet 观察者中添加一个条件还有什么好处呢?

最佳答案

嗯,它是一个观察者。很多时候您想对更改 viewController 属性的值使用react。现在,如果您在 10 个不同的地方修改该属性,您不必复制/粘贴相同的代码 10 次不同的时间 - didSet 观察者会处理这个问题。

例如:

var someVal: Int = 0 {
didSet {
somePostprocessing()
}
}


someVal = 10

// a bit later

someVal = 15

// etc.

优于:

var someVal: Int = 0


someVal = 10
somePostprocessing()

// a bit later

someVal = 15
somePostprocessing()

// etc.

在第一种情况下,您可以确定只要值发生变化,就会发生后处理。在第二种情况下,即使我们愿意接受复制/粘贴(这是不行的),您如何确定在每次修改值时都不会忘记添加 postProcessing?

关于ios - 当你可以改变一个变量并且值无论如何都会改变时,为什么要使用 didSet 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48816846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com