gpt4 book ai didi

ios - 观察类中静态变量的值?

转载 作者:搜寻专家 更新时间:2023-10-31 08:13:07 26 4
gpt4 key购买 nike

我有一个带有 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'
}

这样做最优雅的方法是什么?

更新。这是我的 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 属性的共享实例(单例类),并将观察者添加到该实例。

关于ios - 观察类中静态变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38234896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com