我有一堂课,有一个static var
存储当前在线连接状态的位置。我想观察的价值ConnectionManager.online
通过其他课程。我想这样做KVO,但声明一个static
变量为dynamic
导致错误:
class ConnectionManager: NSObject {
dynamic static var online = false
// adding 'dynamic' declaration causes error:
// "A declaration cannot be both 'final' and 'dynamic'
}
这样做最优雅的方法是什么?
Update。这是我的 KVO 部分的代码:
override func viewDidLoad() {
super.viewDidLoad()
ConnectionManager.addObserver(
self,
forKeyPath: "online",
options: NSKeyValueObservingOptions(),
context: nil
)
}
override func observeValueForKeyPath(keyPath: String?,
ofObject object: AnyObject?,
change: [String : AnyObject]?,
context: UnsafeMutablePointer<Void>) {
if keyPath == "online" {
print("online status changed to: \(ConnectionManager.online)")
// doesn't get printed on value changes
}
}
就目前而言,Swift 无法拥有可观察的类属性。 (事实上,静态属性只是全局变量,其名称空间限制在类中。)
如果您想使用 KVO,请创建一个共享实例(单例类),其中包含online
属性并将观察者添加到实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)