willset 和 didset 在 Swift 中是否被视为闭包?

Are willset and didset considered closures in Swift?

我理解 willsetdidset 的目的,我不确定它们是否被视为关闭。

如果它们是闭包,下面的代码不应该产生强引用循环吗?

var myProperty : Int = 0 {
    didSet { self.callMyMethod() }
}

不,它们不是闭包。你可以把它想象成一种不能直接访问的特殊类型的函数;它只会在 属性 改变时被调用。 (该函数名为 myapp.MyStruct.myProperty.didset;您可以在调试器中看到它。)