【发布时间】:2020-11-16 13:20:31
【问题描述】:
我想知道如果我将观察者添加到自身或对象中的区别。到目前为止,它们对 KVO 的效果相同。
class Human: NSObject {
@objc dynamic var name: String = "name"
}
class SomeClass: UIViewController {
@objc var human = Human()
...
override func viewDidLoad() {
...
human.addObserver(self, forKeyPath: #keyPath(Human.name), options: [.old, .new], context: nil)
addObserver(self, forKeyPath: #keyPath(human.name), options: [.old, .new], context: nil)
}
如果我使用removeObserver(self) 或human.removeObserver(self) 删除观察者也是一样的吗?
感谢您对这个问题的回答。敬请期待!
【问题讨论】:
-
如果您在代码中的其他地方使用
self.human = Human(),我认为第一个示例将停止工作,但第二个则不会。不过我自己没有测试过。 -
明白了!谢谢@JoakimDanielson
标签: ios swift key-value-observing