带KVO的UITableViewCell

时间:2012-07-26 03:11:20

标签: uitableview key-value-observing

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

在您的UITableViewCell子类中添加dealloc方法:

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

类似的东西对你有用。这样你就不会得到那些令人讨厌的“一个实例0x21bb1010的类AnotherObject被解除分配,而键值观察者仍然注册它,”消息了。