这个声明是什么意思?
isChecked = isChecked ^ 1;
isChecked
是一个BOOL
。
“^”是异或运算,所以0翻转为1,1翻转为零。结果应与 相同isChecked = !isChecked
。
它将 XOR isChecked 与 1 所以我认为 true ^ 1 = 0(false) 和 false ^1 = 1(true)
它只翻转BOOL
. 不是逻辑否定的可靠方法。如果有人疯狂到将 aBOOL
变量设置为某个数字,例如 5。那么做^ 1
只会将值的最后一位翻转为 4,它仍然被评估为YES
。
如果要逻辑否定,请改用!
运算符。
^
是异或运算符。
在您的示例中,它用于创建切换 -仅在之前未设置isChecked
时才会设置。isChecked
这是按位异或运算符,将 0 更改为 1,将 1 更改为 0。在这里查看所有操作员。
“^”称为异或或异或运算。在这种情况下,它将布尔值从真变为假,反之亦然。
要了解更多信息,请查看此链接