iOS Swift 中的观察者、动作监听器、KVO
Observer, Action Listener, KVO in iOS Swift
好的,我对 Swift 中的 addObserver 函数有疑问。
如果我更改对象 B 反应的对象 A 的值,这怎么可能? (没有 A 知道 B 但 B 有一个引用 A 的变量)
例如这里:
class A {
var willChange: Int = 0
// if something happened -> willChange = 1
}
class B {
let someThing = A()
//Something like this maybe but i don't really want to check, just get a notice
if someThing.willChange != 0 {
}
func whatEver() {
//called if willChange is changed
...
}
}
不仅如果 willChange 改变了它必须被通知,就像我想要的任何事情发生在 A -> 通知 B。
考虑观察者模式,但如果可能的话,有人可以解释一下。
像这样:
class A {
weak var observer : AnyObject?
var willChange: Int = 0{
didSet{
if let bObject = observer as? B{
bObject.whatEver()
}
}
}
}
class B {
let someThing = A()
someThing.observer = self
func whatEver() {
//called if willChange is changed
...
}
}
好的,我对 Swift 中的 addObserver 函数有疑问。 如果我更改对象 B 反应的对象 A 的值,这怎么可能? (没有 A 知道 B 但 B 有一个引用 A 的变量)
例如这里:
class A {
var willChange: Int = 0
// if something happened -> willChange = 1
}
class B {
let someThing = A()
//Something like this maybe but i don't really want to check, just get a notice
if someThing.willChange != 0 {
}
func whatEver() {
//called if willChange is changed
...
}
}
不仅如果 willChange 改变了它必须被通知,就像我想要的任何事情发生在 A -> 通知 B。 考虑观察者模式,但如果可能的话,有人可以解释一下。
像这样:
class A {
weak var observer : AnyObject?
var willChange: Int = 0{
didSet{
if let bObject = observer as? B{
bObject.whatEver()
}
}
}
}
class B {
let someThing = A()
someThing.observer = self
func whatEver() {
//called if willChange is changed
...
}
}