2013-07-30 144 views
0

!=在大多數語言意味着不等於 但是怎麼樣=!在目標C?我在下面的代碼片段中找到了它。
由於=的含義是什麼?在目標c

- (void) toggleButton: (UIButton *) aButton 
{ 
    if ((_isOn = !_isOn)) 
    { 
     [self setBackgroundImage:BASEGREEN forState:UIControlStateNormal]; 
     [self setBackgroundImage:PUSHGREEN forState:UIControlStateHighlighted]; 
     [self setTitle:@"On" forState:UIControlStateNormal]; 
     [self setTitle:@"On" forState:UIControlStateHighlighted]; 
    } 
    else 
    { 
     [self setBackgroundImage:BASERED forState:UIControlStateNormal]; 
     [self setBackgroundImage:PUSHRED forState:UIControlStateHighlighted]; 
     [self setTitle:@"Off" forState:UIControlStateNormal]; 
     [self setTitle:@"Off" forState:UIControlStateHighlighted]; 
    } 

    [self relaxButton:self]; 
} 
+1

這將是爲'_isOn = ISON減少混亂,當一個有價值的rescource!; if(_isOn){...} else {...} ... – nielsbot

+1

它首先將_isOn設置爲自身的「not」,然後返回要在if語句中進行測試的結果值。 –

回答

7

A =!乙基本上一個布爾說 「A設定爲B的相反」。

例如,你可以這樣做:

BOOL a = NO; 
BOOL b = !a; 

,然後B.將YES

你的代碼行基本上翻轉BOOL is_On的狀態,然後if語句塊正在執行,如果新狀態爲YES,否則else塊正在執行。

0

你在誤讀它。這不是_isOn =! _isOn,它是_isOn = !_isOn。請注意0​​和!之間的距離。單個感嘆號是邏輯否定,即它正在切換_isOn的值並將結果分配回_isOn

+0

我想我問問題是因爲我不明白,對吧? 順便說一句,仍然謝謝你給出一個答案。 :) – Bear

1

!是基本布爾運算符之一。與||&&一起,!用於操作布爾值。因爲布爾運算符只能是真或假,所以布爾運算符很容易理解。

1)not運算符(!)用於反轉布爾變量的狀態。不成立後,真成爲假,假成真。

BOOL a = NO; 
a = !a; 
if (a) { 
... 
// will execute because a is now YES, or true 
} 

2)和運算符(&&)用於兩個布爾值。如果兩個值進行比較,則返回true。如果任何一個值,被比較返回false都是假

BOOL a = NO; 
BOOL b = YES; 
if (a && b) { 
... 
// will not execute because NO && YES is NO 
} 

a = YES; 
if (a && b) { 
... 
// will execute because YES && YES is YES 
} 

3)或運營商(||)也用於在兩個布爾變量。如果其中一個布爾值是真的,它將返回true。

BOOL a = YES; 
BOOL b = NO; 
if (a || b) { 
... 
// will execute because YES || NO is YES 
} 

真值表是想着布爾運算符

true || true = true 
true || false = true 
false || true = true 
false || false = false 

true && true = true 
true && false = false 
false && true = false 
false && false = false 

!true = false 
!false = true