在可可观察自我

Ada*_*nst 5 cocoa key-value-observing

在Cocoa中,addObserver:forKeyPath:options:context:保留"既不是接收者,也不是观察员".因此我假设允许观察自我; 也就是说,做类似的事情是完全有效的

[self addObserver:self forKeyPath...]

只要你记得以selfdealloc作为观察者取消注册.

这个假设是否正确?

Bri*_*ter 12

是的,没有任何理由你不能观察自己.但就像你说的那样,像任何KVO观察一样,确保在被解除分配之前将自己作为观察者移除.

对于记录,如果您只是谈论一个简单的密钥,另一种方法是编写自定义setter并执行setter中所需的任何代码.这种风格使调用setter的全部效果变得更加明显.KVO方式虽然更灵活,但可以使用包含多个组件的关键路径.