更改属性(意味着属性设置器已经从调用堆栈中弹出)之后或执行属性设置器时会调用它吗?
斯威夫特很方便"Property observers"。Obj-C对于KVO是否有类似的东西?
这取决于添加观察者时使用的选项。如果观察者是用 来添加的NSKeyValueObservingOptionPrior,则-observeValueForKeyPath:...在属性更改之前和之后都会被调用。或者,更准确地说,它在方法期间-willChange...和方法期间都被调用-didChange...。
如果NSKeyValueObservingOptionPrior未使用,则-observeValueForKeyPath:...仅在属性更改后调用。(在-didChange...方法过程中。)
Swift 属性观察器与 KVO 并不相似。相反,它们更像是自己实现属性设置器(或在子类中重写它),并在实际更改支持属性的实例变量(或调用超级)之前和/或之后执行某些操作。
我建议不要编写一个在其自身属性上使用 KVO 来响应更改的类。相反,它应该实现 setter 以在属性更改时执行某些操作。
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |