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 результат с этой переменной, чтобы удалить бит.