例如,我想在类实例上调用一个方法,将一个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] 举报,一经查实,本站将立刻删除。