有没有办法以点表示法进行此调用?:
[someSwitch setOn:YES animated:YES]
答案 0 :(得分:1)
为someSwitch创建一个自定义类:
@interface MySwitch : UISwitch
@property (assign) BOOL animatedOn;
@end
@implementation MySwitch
-(BOOL) animatedOn { return [self isOn]; }
-(void) setAnimatedOn:(BOOL)inOn { [self setOn:inOn animated:YES]; }
@end
然后使用它:
someSwitch.animatedOn = YES;
通过点表示法设置属性仅限于一个参数。但是,getter和setter不需要映射到实际成员。所有带有animated:
变体的Apple setter在与点表示法一起使用时默认不动画。
答案 1 :(得分:0)
@ drawnonward的答案很好。问题是你为什么要那样做。
用于访问合成对象属性的getter和setter的点符号的美妙之处在于,您可以将带点标记的属性视为数据字段。在幕后有方法调用的东西正在发生,但在你写的时候,感觉你正在直接谈论对象的数据字段。
我看过几个新的iPhone开发人员(包括我现在正在训练的那个)对于何时点到标记以及何时进行[object message]
变得非常困惑。它的底线是,点符号用于访问数据字段(虽然知道它是围绕合成getter和setter方法的一个方便的语法糖),并且方法调用用于指示对象执行某些操作。显然,“setValue”是一个可能的事情,这也是完全有效的。