gpt4 book ai didi

objective-c - 什么时候调用 observeValueForKeyPath?

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

它是在属性更改后被调用(意味着属性 setter 已经从调用堆栈中弹出)还是在属性 setter 正在执行时被调用?

Swift 有非常方便的 “Property observers”。 Obj-C 对 KVO 有类似的东西吗?

最佳答案

这取决于添加观察者时使用的选项。如果观察者是使用 NSKeyValueObservingOptionPrior 添加的,则 -observeValueForKeyPath:... 在属性更改之前和之后都会被调用。或者,更准确地说,它在 -willChange...-didChange... 方法期间都被调用。

如果 NSKeyValueObservingOptionPrior 未被 使用,则 -observeValueForKeyPath:... 仅在属性更改后调用。 (在 -didChange... 方法期间。)

Swift 属性观察器与 KVO 并不十分相似。相反,它们更像是自己实现属性 setter (或在子类中覆盖它)并在实际更改支持属性的实例变量(或调用 super)之前和/或之后做一些事情。

我建议不要编写一个在其自身属性上使用 KVO 来响应更改的类。相反,它应该实现 setter 以在属性更改时执行某些操作。

关于objective-c - 什么时候调用 observeValueForKeyPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236457/

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