2015-10-27 2 views
0

У меня есть программа, в которой я хочу, чтобы перевернуть значение BOOL без этого:Зеркальное значение BOOL

@property (nonatomic, assign) BOOL *boolValue; 

if (boolValue == YES) { 
    boolValue = NO; 
} 
if (boolValue == NO) { 
    boolValue = YES; 
} 

Есть ли способ я могу использовать, чтобы переключить значение, не используя таким образом?

+0

[related] (http://stackoverflow.com/questions/541289/objective-c-bool-vs-bool); похоже, вы можете просто 'boolValue^= 1'. – Kenney

+0

Кенни имеет правильную идею. По крайней мере, для второго заявления вы можете использовать 'else'. – brandaemon

ответ

3

У вас здесь несколько вещей.

  1. Не строите недвижимость BOOL *, сделайте это всего лишь BOOL.
  2. Никогда не проверяйте значение BOOL непосредственно против YES или NO.
  3. Переключение BOOL осуществляется по boolValue = !boolValue;.

Ваш код становится:

@property (nonatomic, assign) BOOL boolValue; 

boolValue = !boolValue; // "flip" the BOOL value 

BTW - для точки # 2 вы должны написать такие if такие заявления:

if (boolValue) { // is it YES? 

или:

if (!boolValue) { // is it NO? 

Но ни необходимо перевернуть значение.

+0

ОК спасибо :) – av993

Смежные вопросы