1

当我像下面这样声明我的属性时,我需要使用 getter 属性覆盖多个属性的 getter 方法。我希望我所有属性的 getter 与获取这三个属性的代码的方法相同。

@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]的 . 此时,您已经丢失了有关调用哪个属性的信息。

您应该为每个属性定义一个不同的 getter,任何共享或重复的代码都可以进入一个私有方法,例如getObject:

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

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

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

// ...
于 2012-06-11T10:11:40.587 回答