Я нашел эту часть кода «^ =» в каком-то старом проекте, я видел, как он меняет состояние, когда я вызываю «status ^ = YES;».Может кто-нибудь объяснить мне, что это такое?
BOOL status = YES; status ^= YES;
https://en.wikipedia.org/wiki/Bitwise_operations_in_C
Побитовое XOR (исключающее или) выполняет логическую функцию XOR, которая эквивалентна добавлению двух битов и отбрасыванию переноса. Результат равен нулю только тогда, когда у нас есть два нуля или два. XOR может использоваться для переключения битов между 1 и 0. Таким образом, i = i ^ 1 при использовании в цикле переключает свои значения между 1 и 0.
i = i ^ 1
Итак, status ^= YES - это разумный способ переключения между 1 и 0, то есть ДА и НЕТ. Простые смертные скажут status = !status.
status ^= YES
status = !status