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"];
        }
    }
}

似たようなことがうまくいくはずです。そうすれば、「クラスAnotherObjectのインスタンス0x21bb1010は、キー値オブザーバーがまだ登録されている間に割り当てが解除されました」という厄介なメッセージが表示されなくなります。

于 2013-05-16T16:46:53.503 に答える