为什么点符号起作用而不是括号?

时间:2010-06-16 19:13:58

标签: iphone objective-c

所以我称之为:

[leftSwitch hidden:NO];

但是当我点击调用此代码来自的IBAction的分段控件时,iPhone模拟器只会崩溃(没有编译器错误)。

但是,只要我将其更改为:

leftSwitch.hidden = NO;

它有效...我没有做任何其他改变。

2 个答案:

答案 0 :(得分:11)

你想要

[leftSwitch setHidden:NO];

请注意名称的自动更改 - 方法版本获取设置前缀。

答案 1 :(得分:3)

为属性合成的默认方法是

[foo bar]

是吸气剂,

[foo setBar:other]

这是设定者。

但是属性简写允许您通过使用点表示法来访问这些方法,因此您可以像访问任何其他ivar一样访问这些方法,但您实际上是在后台使用这些合成属性。在属性声明中,您可以更改默认名称,但最好根据正常的Objective C约定保留它。