如果self.bitmask | = flag添加一个选项,如何删除一个?

ope*_*rog 19 c iphone objective-c ipad ios

self.accessibilityTraits |= UIAccessibilityTraitAdjustable;
Run Code Online (Sandbox Code Playgroud)

添加UIAccessibilityTraitAdjustable选项.但是如何从面具中删除一个选项,而不必设置所有内容?

tro*_*foe 34

而且它与标志的补充:

self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;
Run Code Online (Sandbox Code Playgroud)

如果self.accessibilityTraits是:

  000110
Run Code Online (Sandbox Code Playgroud)

UIAccessibilityTraitAdjustable是:

  000100
Run Code Online (Sandbox Code Playgroud)

(这些值是示例;我没有查找真实值)

然后 self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;是:

  000110
& 111011
= 000010
Run Code Online (Sandbox Code Playgroud)


pho*_*xis 7

尝试 self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;

~为此反转要保留的位为1,要清零的位为0.用左侧变量对其进行保持将保留在相应位置具有1 ~UIAccessibilityTraitAdjustable的位,并将清除0中的位.相应的位置~UIAccessibilityTraitAdjustable.


Nbr*_*r44 6

self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;

~UIAccessibilityTraitAdjustable将所有位反转,留下代表您选项的位0.二进制负责其余部分.


Joa*_*son 5

self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;
Run Code Online (Sandbox Code Playgroud)

~位掩码(NOT)反转为包含给定位之外的所有位,并且&= ANDs将结果与变量一起移除该位.