2012-10-26 143 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