При использовании KVO необходимо ли удалять себя как наблюдателя за собой in -dealloc?

в методе -init моего подкласса NSObject экземпляр добавляет себя в качестве наблюдателя некоторых из своих собственных keyPath, чтобы инициировать действие, которое должно произойти каждый раз при изменении одного из рассматриваемых свойств. Например,

[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.

7
задан hyperspasm 6 June 2011 в 17:30
поделиться