微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 初始声明后可以添加属性观察者吗?

例如,我想在类实例调用一个方法,将一个willSet添加属性中.我不想在属性的声明中指定willSet,因为我需要在观察者中添加条件逻辑,并且对于没有调用方法的每个其他实例,它将被不必要地运行.

像这样的东西:

var someProperty: Int

func someMethod() {
    someProperty {  // this is the Syntax/ability I'm unsure about
        willSet { ...add some behavior... }
    }

    ...more stuff...
}@H_404_12@

解决方法

可以将观察者添加到超类中声明的属性,但不能添加到同一个类或类扩展中.您不能在函数中的两个位置声明相同的属性.我能想到的最好的解决方案就是这样,你在willSet中有一个可选的闭包,你只需要在想要观察行为时为该属性赋值.

也许是这样的:

private var _willSetCallback: ((Int) -> (Bool))?
var someProperty: Int {
    willSet {
        if let optionalBool = _willSetCallback?(newValue) {
             // do something
        }
    }
}

func someMethod() {
    self._willSetCallback = { newValue in
    return newValue > 0
    }
}@H_404_12@ 
 

它不是特别优雅,但它可能或多或少地处理你想要的行为?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐