Only members of classes may be dynamic
当我尝试dynamic
向协议属性添加修饰符时,Xcode显示错误。
所以我尝试了另一种方法,dynamic
在类中而不是在协议中添加,必须通过写入来指示Gettable属性{get}
。
这是我的代码:
var myproperty: Int {get}
dynamic var myproperty: Int {
return otherproperty
}
如果我myproperty
以正常方式观察,则在otherproperty
更改myproperty
值时它不会触发KVO通知,因为在调用或使用之前值不会更改。
非常感谢!
我认为我们可以使用一些技巧来实现我们的目标。在protocol
添加一个名为observeKeyPath
Like的属性中:
var myproperty: Int {get}
var observeKeyPath: String {get}
dynamic otherproperty: AnyObject!
var myproperty: Int {
return otherproperty
}
var observeKeyPath {
return "otherproperty"
}
self.addObserver(protocol,
forKeyPath: protocol.observeKeyPath,
options: .New | .Old,
context: nil)
提示:如果keyPath使用点语法,例如"object.property"
,请确保object
和property
都被修改dynamic
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句