5

アクセサーを使用することは、コレクション オブジェクトで KVO 通知を取得する方法のようですが、これは UIViewController の childViewControllers NSArray プロパティでは機能しないようです。このプロパティにオブジェクトが追加または削除されたときに通知を受け取りたいです。だから私はこれを試しました:

[self addObserver:self forKeyPath:@"childViewControllers" options:NSKeyValueObservingOptionNew context:nil];

-(NSUInteger)countOfChildViewControllers
{
    return self.childViewControllers.count;
}

しかし、私がそれを正しく行っているかどうかはわかりません。通知を受け取っていません。私が望むことは可能ですか?

4

1 に答える 1

0

ポイントは、プロパティのすべての変更が KVO 準拠の手段を経る必要があるということです。これUIViewControllerは の実装方法に関係しており、そのクラスの外からは何もできません。インデックス付きコレクション アクセサーを使用することは、 の実装でUIViewControllerKVO 準拠を実現する方法の 1 つですが、他にも方法があります。そのプロパティが KVO に準拠しているかどうかはわかりません。あなたが報告したことから、明らかにそうではありません。基礎となる実装がそれらを使用しない場合、カテゴリまたはサブクラスにゲッターまたはセッターを追加しても役に立ちません。

于 2012-04-26T20:44:27.423 に答える