【发布时间】:2011-06-06 17:30:23
【问题描述】:
在我的 NSObject 子类的 -init 方法中,实例将自己添加为自己的一些 keyPaths 的观察者,以便在任何相关属性发生更改时触发应该发生的操作。例如。
[self addObserver:self forKeyPath:@"aProperty" options:0 context:nil];
[self addObserver:self forKeyPath:@"anotherProperty" options:0 context:nil];
...
我的问题是,在类的 -dealloc 方法中,我是否必须将实例作为自身的观察者删除?例如。
[self removeObserver:self forKeyPath:@"aProperty"];
[self removeObserver:self forKeyPath:@"anotherProperty"];
...
按照我的理解,当一个对象试图向一个不再存在的对象发送消息时,就会抛出异常,这显然是一个问题。但在这种情况下,不再存在的对象不可能向自己发送消息,所以这应该不是问题。
我还没有遇到任何问题,但它仍然让我有些困扰,因为我从未见过它明确表示你可以这样做。
我只是想避免写一大堆
[self removeObserver:self forKeyPath ...]
在我的 -dealloc 方法中。
【问题讨论】:
标签: objective-c key-value-observing