Swift willSet/didSet 赋值?

标签 swift didset

我想通过使用 didSet/willSet API 观察类中几个属性的变化。但是我想保持我的属性声明部分干净,所以我想有单独的函数来实现这个逻辑。

现在我有这样的东西:

var myProperty: SomeType {
    didSet {
        handleDidSetMyProperty()
    }
}

然而,这会占用 5 行,如果您有更多此类属性,这会相当多。如果我可以将其限制为 3 就好了,例如:

var myProperty: SomeType {
    didSet = handleDidSetMyProperty
}

Swift 中有没有一种方法可以将函数/闭包分配给属性观察者?

最佳答案

不,你不能。参见 Declarations在 swift 编程语言。

在“变量声明的语法”中你会发现

didSet-clause → attributes­opt ­didSet­ setter-name­­opt ­­code-block­

和“代码块的语法”

code-block → {­ statements­opt

didSet 关键字后面只能跟一个代码块(带有 强制花括号)。

关于Swift willSet/didSet 赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50017893/

相关文章:

arrays - didSet 没有在每次突变时都被调用吗?

ios - 如何在 objective-c 中实现 "didset of swift"?

ios - Google map iOS 当前位置默认值

swift - 避免从作为另一个 ViewController 子级的 ViewController 以编程方式完成的 UITableView 的保留周期

ios - 如何将数据从 ViewController 传递到 UITabBarController -> UINavigationController -> ViewController

javascript - didSet 在 Javascript : calling function when variable is altered

初始化时 Swift 触发 didSet

swift - didSet 中的循环

swift - 在 Swift 项目中使用 OpenGL

ios - CTCarrier 在所有属性上返回 nil