2012-10-26 4 views
0

, 예를 들어, 정적 변수의 내용으로 BOOL 매개 변수를 비교하고 싶습니다비교 두 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

클래스 원시 (또는 스칼라) 입력하지, 당신은 ==

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

안녕하세요. Matthias, 답변 해 주셔서 감사합니다. 'BOOL'은'NSNumber' 객체로 저장되어 있다고 생각했습니다. '=='단지 포인터를 비교하고 실제 값을 비교하지 않겠는가? – AlexR

+0

BOOL은 int 또는 float와 같은 기본 유형입니다. 그것을 직접 비교하십시오. http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/FoundationTypesandCollections/FoundationTypesandCollections.html –

1

부울와 직접 비교할 수 대신 ISEQUAL의 == 기호와 비교입니다 마티아스 Bauch는

단순히 == 운영자 즉

0을 사용하여 비교를 제안합니다
0

로 : BOOL 이후

3

부울 변수는 BOOL이 정말 정수이기 때문에

if(Bool1 == Bool2){ 

    // do something here} 
1

여기에 언급 된 솔루션은, 2 개 BOOL 값을 비교하는 가장 안전한 방법은 아니다 == 기호 대신 ISEQUAL과 비교, 그래서 그들은 포함 할 수 있습니다 YES/NO 값 이상. 가장 좋은 방법은 여기에 자세히 나와있는 것처럼 함께 XOR하는 것입니다. https://stackoverflow.com/a/11135879/1026573