2

我有一个自定义表格视图单元格,它还使用以下方法观察另一个对象的键:

[_anotherObject addObserver:myCell
                 forKeyPath:@"killed"
                    options:NSKeyValueObservingOptionNew
                    context:0];

_anotherObject是我的自定义表格视图单元格类中的一个 ivar。

我知道我应该myCell在某个时候移除作为观察者,但我不知道我应该什么时候做。

据我所知,可能的地方是:-dealloc&-prepareForReuse

4

1 回答 1

0

在 UITableViewCell 子类中添加一个 dealloc 方法:

-(void)dealloc {
    for (AnotherObject *object in self.subviews) {
        if ([object isKindOfClass:[AnotherObject class]]) {
            [object removeObserver:self forKeyPath:@"killed"];
        }
    }
}

类似的东西应该适合你。这样你就不会再收到那些讨厌的“An instance 0x21bb1010 of class AnotherObject 已被释放,而键值观察者仍向其注册”的消息。

于 2013-05-16T16:46:53.503 回答