Objective-C:有条件地调用不同的属性

时间:2015-06-13 18:32:57

标签: ios objective-c class properties conditional-statements

假设这个类包含两个不同的属性,例如:

@interface MyClass : NSObject

@property id valueWhenNO;
@property id valueWhenYES;

@end

在使用这个名为'state'的布尔值的类时,我知道我可以根据它的'state'获取属性:

MyClass *myClass;
id value = state ? myClass.valueWhenYES : myClass.valueWhenNO;

但是我发现在复杂的代码中使用大量的条件语句会使它的可读性变得非常困难。由于我打算不向'MyClass'提供有关'state'的信息,因此'MyClass'中不能有其他布尔属性。

在Objective-C类中是否有任何方法可以使用如下所示的短代码来有条件地获取属性?

id value = myClass.valueByState;

2 个答案:

答案 0 :(得分:2)

具有1个属性的2个实例,而不是具有2个属性的1个实例。然后,当状态改变时,你切换实例而不是在任何地方都有代码来检查状态。

答案 1 :(得分:0)

您可以将切换逻辑放在只读属性中。

- (id)properObject {return((state)?self.valueWhenYes:self.valueWhenNo); }