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
  ...
  }
}