KVO - 如何获取一个对象注册的观察者列表

8

我正在动态地为一些 UITableView 控制器注册观察者,因此我需要在同一对象上注册先前的观察者时删除它们。为了做到这一点,我需要检查对象上是否存在观察者。

这是可能的吗?我知道对于 NSNotification,您可以使用 NSNotificationCenter 单例,但是 KVO 是否也适用呢?

2个回答

17

我不知道怎样才能移除在同一对象上注册的观察者。

但我认为下面的方法可以帮助您进一步找到解决方案。

observationInfo

返回一个指针,用于标识与接收器注册的所有观察者相关的信息。

- (void *)observationInfo

该方法的默认实现从全局字典中使用接收者的指针作为键来检索信息。


这个回答在你深入了解苹果 KVO 文档之前,提供了一些有关 observationInfo 使用的更详细的解释。 - Robin Macharg

2

很抱歉,我不知道有什么简单的方法。KVO和NSNotification在这方面有所不同。 如果你需要这个功能,为什么不使用NSNotification来实现你的解决方案,而不是KVO呢?


我正在绑定一个TableView以便检测它是否有项目。我猜我可以手动分派通知事件。我有一个处理数据提供程序的超类。KVO似乎是理想的选择。当然,我也可以用另一种方式来实现。感谢您的迅速回复。 - Lee Probert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接