当我声明我的属性时,我需要使用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: %@", ?????)
}
关于如何做到这一点的任何想法?
非常感谢! 雷诺
答案 0 :(得分:1)
这是不可能的。
当您定义getter
方法时,编译器会将myObject.obj3
的请求转换为[myObject getObject]
。此时,您丢失了有关调用哪个属性的信息。
您应该为每个属性定义一个不同的getter,任何共享或重复的代码都可以进入getObject:
这样的私有方法:
- (NSString *)getObject:(NSString *)propertyName {
// ...
}
- (NSString *)obj1 {
return [self getObject:@"obj1"];
}
- (NSString *)obj2 {
return [self getObject:@"obj2"];
}
// ...