If self.bitmask | = флаг добавляет параметр, как его удалить?
Пример
self.accessibilityTraits |= UIAccessibilityTraitAdjustable;
добавляет параметр UIAccessibilityTraitAdjustable. Но как удалить опцию из маски, как это, без необходимости устанавливать все?
Ответы
Ответ 1
И это с дополнением к флагу:
self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;
Если self.accessibilityTraits
было:
000110
и UIAccessibilityTraitAdjustable
:
000100
(эти значения являются примерами, я не искал реальные значения)
то self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;
:
000110
& 111011
= 000010
Ответ 2
self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;
~UIAccessibilityTraitAdjustable
инвертирует все биты, оставляя объект, представляющий вашу опцию, 0
. Двоичный и заботится обо всем остальном.
Ответ 3
Попробуйте self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;
~
инвертирует биты, а биты, которые должны быть сохранены, равны 1, а биты, подлежащие очистке, равны 0. И для этого с левой стороны переменная будет сохранять биты, которые имеют 1 с в соответствующих местоположениях ~UIAccessibilityTraitAdjustable
и очистит биты, которые имеют 0s в соответствующих местах ~UIAccessibilityTraitAdjustable
.
Ответ 4
self.accessibilityTraits &= ~UIAccessibilityTraitAdjustable;
~
инвертирует битмаску (NOT), чтобы содержать все биты, кроме одного, и &=
AND
результат с этой переменной, чтобы удалить бит.