Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 什么时候调用observeValueForKeyPath?_Objective C_Swift - Fatal编程技术网

Objective c 什么时候调用observeValueForKeyPath?

Objective c 什么时候调用observeValueForKeyPath?,objective-c,swift,Objective C,Swift,它是在属性更改后(意味着属性设置器已经从调用堆栈中弹出)还是在属性设置器执行时被调用 Swift有非常方便的“财产观察员”。Obj-C是否有类似于KVO的功能?这取决于添加观察者时使用的选项。如果向观察者添加了nskeyValueObservingOptionPrevior,则在更改属性之前和之后都会调用-observeValueForKeyPath:…。或者更准确地说,它在-willChange…和-didChange…方法期间都被调用 如果未使用nskeyValueObservingOpti

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


Swift有非常方便的
“财产观察员”
。Obj-C是否有类似于KVO的功能?

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

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

Swift property Observators与KVO并不十分相似。相反,它们更像是自己实现属性设置器(或在子类中重写它),并在实际更改支持属性的实例变量(或调用super)之前和/或之后执行某些操作

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

:

上面的链接应该是你正在寻找的。是苹果