如何在Dot Notation中执行此操作?

时间:2010-06-17 08:17:42

标签: iphone

有没有办法以点表示法进行此调用?:

[someSwitch setOn:YES animated:YES]

2 个答案:

答案 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”是一个可能的事情,这也是完全有效的。