1

次のようにプロパティを宣言するときに、getter 属性を使用して複数のプロパティの getter メソッドを上書きする必要があります。これら 3 つのプロパティを取得するコードが同じであるため、すべてのプロパティのゲッターを同じメソッドにしたいと考えています。

@property (nonatomic,strong, getter=getObject) (NSString*) obj1;
@property (nonatomic,strong, getter=getObject) (NSString*) obj2;
@property (nonatomic,strong, getter=getObject) (NSString*) obj3;

ただし、 getObject メソッドで、現在どのプロパティが要求されているかを知る必要があります。getObject メソッドの実装で、現在どのオブジェクトが要求されているかを知ることは可能ですか? 次の %@ コードが obj1、obj2、または obj3 を返すようにしたいと考えています。

-(NSString*) getObject{ 

   NSLog(@"the property requested is: %@", ?????)

}

それを行う方法についてのアイデアはありますか?

どうもありがとう!ルノー

4

1 に答える 1

1

これは不可能です。

メソッドを定義するgetterと、コンパイラはリクエストをmyObject.obj3単にに変換します[myObject getObject]。その時点で、呼び出されたプロパティに関する情報が失われます。

プロパティごとに異なるゲッターを定義するだけで、共有または複製されたコードは次のようなプライベート メソッドに入ることができますgetObject:

- (NSString *)getObject:(NSString *)propertyName {
    // ...
}

- (NSString *)obj1 {
    return [self getObject:@"obj1"];
}

- (NSString *)obj2 {
    return [self getObject:@"obj2"];
}

// ...
于 2012-06-11T10:11:40.587 に答える