2012-10-26 246 views
0

在我的實例方法,想一個BOOL參數比較靜態變量的內容,例如:比較兩個布爾值

- (NSArray*)myMethod:(NSString*)someString actualValuesOnly:(BOOL)actualValuesOnly { 
static NSString *prevSsomeString; 
static BOOL prevActualValuesOnly; 
static NSArray *prevResults 

if ([someString isEqualToString:prevSomeString] && 
       ([actualValuesOnly isEqual: prevActualValuesOnly]) 
       // HOW TO COMPARE THESE TWO BOOLEANS CORRECTLY?? 
    { return prevResults; }// parameters have not changed, return previous results 
else { } // do calculations and store parameters and results for future comparisons) 

什麼是做到這一點的正確方法是什麼?

回答

5

由於BOOL是原始(或量化的)類型的,而不是一類,可以用==

if ([someString isEqualToString:prevSomeString] && actualValuesOnly == prevActualValuesOnly) 
+0

嗨馬提亞斯,謝謝你的回答。我認爲'BOOL's存儲爲'NSNumber'對象。不會'=='只是比較它們的指針而不是它們的實際值? – AlexR

+0

BOOL是一個基本類型,例如int或float。直接比較它。 http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/FoundationTypesandCollections/FoundationTypesandCollections.html –

1

布爾直接比較它與==符號代替ISEQUAL比較:

0

作爲馬蒂亞斯鮑赫表明,

使用==運營商即

0簡單地做比較
3

布爾變量是用==符號,而不是比較的isEqual

if(Bool1 == Bool2){ 

    // do something here} 
1

這裏提到的解決方案是不是比較2個BOOL值的最安全的方式,因爲BOOL實際上只是一個整數,因此它們可以包含不僅僅是YES/NO值。最好的辦法是把它們XOR在一起,就像在這裏詳細說明的一樣:https://stackoverflow.com/a/11135879/1026573