1

これはばかげた質問かもしれませんが、ViewControllerに次のような方法があります。

[self registerProperty:self.currentUser];

の実装ではregisterProperty:、文字列「currentUser」を取得したいと思います。

これを行うのは、実際のユーザーオブジェクトではなく、ビューコントローラー「currentUser」のプロパティを監視して、セッターをインターセプトできるようにするためです。

現時点では、Objective-CランタイムでView Controllerのすべてのプロパティのリストを確認し、プロパティの値がcurrentUserオブジェクトと等しいかどうかを確認しています。

-(void)registerProperty:(id)property 
{
    for (NSString *propertyName in [self allPropertiesOfClass:[property class]])
        if ([property isEqual:[self valueForKey:propertyName]])
             NSLog(@"The property passed into the method is %@", propertyName);
}

これに伴う問題は、両方に同じユーザーオブジェクトを含む2つのプロパティがある可能性があることです。その場合、どちらかがそのテストに合格します。どうすればこれを修正できますか?

4

1 に答える 1

2

監視するプロパティを持つオブジェクトと、個別にプロパティ名を文字列として渡します。つまり、KVO-addObserver:...メソッドの引数 (のサブセット) をミラーリングします。

于 2013-02-17T04:39:45.403 に答える