我对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
}
即。如果未选择发件人,请执行声明。这无疑是显而易见的,我现在对它有点困惑。
谢谢!
答案 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我希望它有帮助