如何查看可可中的对象正在观察什么

发布于 2024-11-10 06:08:37 字数 283 浏览 1 评论 0 原文

我知道有一种方法可以使用 ObservationInfo 查看对象上正在观察的属性,但是有没有办法查看对象设置为观察的内容?

[otherObject addObserver:zombie forKeyPath:@"brains" context:apocalypse] 

调用 [otherObject ObservationInfo] 显示僵尸正在观察 @"brains" 键路径,但我想调用 [zombie ObserverFor] 或其他东西,看看它被设置为观察者......

I know there is a way to see what properties are being observed on an object with observationInfo but is there a way to see what an object is set to observe?

[otherObject addObserver:zombie forKeyPath:@"brains" context:apocalypse] 

Calling [otherObject observationInfo] reveals that the zombie is observing the @"brains" keypath but I would like to call [zombie observerFor] or something and see what it is set as an observer for....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏闹i 2024-11-17 06:08:37

我不认为你能做到这一点。 KVO 的实现将指向观察对象的指针存储在被观察对象中(实际上,它是被观察对象的动态创建的子类)。因此观察对象不会维护对其正在观察的对象的任何引用。关于 KVO 的 Apple 文档 这里 说得更多一些。 这个thread 详细介绍了 KVO 和 isa-swizzling 的实际实现。

I don't think you can do this. The implementation of KVO stores pointers to the observing object in the observed object (sort of, actually, it's a dynamically created subclass of the observed object). So the observing object does not maintain any reference to the objects it is observing. The Apple documentation on KVO here says a little bit more. This thread says a little bit more about the actual implementation of KVO and isa-swizzling.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文