sender.selected =怎么样! sender.selected在选定状态之间切换?

时间:2013-08-14 23:17:28

标签: ios objective-c ios6 toggle

我对Objective-C很新,很抱歉,如果这对你们很多人来说非常明显,但我正在努力弄清楚下面这段代码是如何运作的:

- (IBAction)chooseColour:(UIButton *)sender {
 sender.selected = !sender.isSelected;
}

现在它显然在发送动作的按钮的选定状态和未选择状态之间切换,但代码'sender.selected =!sender.isSelected'究竟在说什么?它只是'将发送者选择的属性设置为相反(即,不是)的getter'?因此,如果getter将当前选定的值“获取”为true,则将所选属性设置为!true,即false。或者这是一块我还不知道的便利代码?因为'!sender.isSelected'似乎也意味着没有选择

if (!sender.isSelected){
statement
}

即。如果未选择发件人,请执行声明。这无疑是显而易见的,我现在对它有点困惑。

谢谢!

4 个答案:

答案 0 :(得分:2)

你是完全正确的,它调用getter获取值并使用值的NOT(!)调用setter。它不是Objective-C,它是普通的C语法。

答案 1 :(得分:1)

  

是否只是'将发件人选择的属性设置为相反的(即不是)getter'?

完全。这一点。

  

或者这是一段我还不知情的便利代码?

不,唯一的句法糖是getter / setter的点符号,但你已经意识到了。

答案 2 :(得分:0)

代码的一部分:

sender.selected = !sender.isSelected;

基本上反转选择。它询问问题Is this false?,因此true评估为false,false评估为true。所以这是一个切换。

答案 3 :(得分:0)

来自文档:

@property(nonatomic,getter=isSelected) BOOL selected;                                // default is NO may be used by some subclasses or by application

//解释 如果您使用![sender isSelected]属性中的值不会更改。然后,如果您使用setter sender.selected =![sender isSelected] - 将新值设置为sender(selected属性)。然后运行getter sender isSelected返回新值,uff我希望它有帮助