2011-11-09 2 views
0

다음 경고가 나타납니다. Comparison of unsigned expression < 0 is always false.Objective-C, 부호없는 표현식 비교 <0은 항상 거짓, 오류입니까?

어떻게 고칠 수 있을지 모르겠습니다. [allWindows count] - 1는 음수가 될 수 없다 경우

if(topWindowIndex < 0) 

그것은으로 정의되어 ...

NSUInteger topWindowIndex = [allWindows count] - 1; 
+0

@halfdan 편집 해 주셔서 감사합니다.하지만 해당 제목의 유사 태그는 유기적으로 사용되어야합니다. [HOWTO : MSO에서 좋은 제목 쓰기] (http://meta.stackexchange.com/questions/10647/howto-writing-good-titles)를 참조하십시오. –

+0

@Bavarious, 메모와 링크를 보내 주셔서 감사합니다. – halfdan

답변

9

은 테스트 (하고 제어하는 ​​코드)가 필요하지 않습니다. 음수 일 수있는 경우 topWindowIndex을 부호 유형 (int 또는)으로 선언해야합니다. [allWindows count] 이제까지 0이면

NSUInteger topWindowIndex = [allWindows count] - 1; 

, 당신은 매우 얻을 것이다

NSUInteger numWindows = [allWindows count]; 
... 
if (numWindows < 1) ... 
2

이 위험하다 :

더 나은 솔루션, IMO, 그 대신 직접 수와 사용을 저장하는 것입니다 topWindowIndex로 큰 숫자 (넌센스). 위의 답변에서

0

기본 대답 :

사용 NSInteger 대신 NSUInteger (서명).