比较两个布尔值
问题描述:
在我的实例方法,想一个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)
什么是做到这一点的正确方法是什么?
答
由于BOOL
是原始(或量化的)类型的,而不是一类,可以用==
if ([someString isEqualToString:prevSomeString] && actualValuesOnly == prevActualValuesOnly)
答
布尔直接比较它与==符号代替ISEQUAL比较:
答
作为马蒂亚斯鲍赫表明,
使用==运营商即
0简单地做比较
答
布尔变量是用==符号,而不是比较的isEqual
if(Bool1 == Bool2){
// do something here}
答
这里提到的解决方案是不是比较2个BOOL值的最安全的方式,因为BOOL实际上只是一个整数,因此它们可以包含不仅仅是YES/NO值。最好的办法是把它们XOR在一起,就像在这里详细说明的一样:https://stackoverflow.com/a/11135879/1026573
嗨马提亚斯,谢谢你的回答。我认为'BOOL's存储为'NSNumber'对象。不会'=='只是比较它们的指针而不是它们的实际值? – AlexR
BOOL是一个基本类型,例如int或float。直接比较它。 http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/FoundationTypesandCollections/FoundationTypesandCollections.html –