2012-10-11 23 views
1

我有一個if else語句,並有2個完全正確的參數在裏面,但是第二個,如果給我這樣的警告:邏輯和位運算符警告困惑 - iOS設備

與使用的邏輯「& &」恆定的操作數

使用的代碼是:

else if (!IS_WIDESCREEN && UIInterfaceOrientationPortrait) //No Warning or error 
{ 

} 
else if(IS_WIDESCREEN && UIInterfaceOrientationLandscapeRight) //Gives me the above warning 
{ 

} 

注:IS_WIDESCREEN - 定義瓦特ith針對iPhone 5屏幕的測量。

任何想法,爲什麼這是??

///編輯:

加我如何定義的iPhone 5

#define IS_WIDESCREEN (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

整個事情是這樣的方法中:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfa‌​ceOrientation duration:(NSTimeInterval)duration 
+0

當你說這與三圍爲iPhone 5的屏幕定義你的意思是它只是硬編碼到大小或者是在其定義的另一個邏輯檢查? – rooster117

+0

爲你添加了代碼,所以你可以看到我做了什麼 –

+0

這是在'shouldAutoRotateToInterfaceOrientation'方法中嗎? – aqua

回答

1

我覺得應該是

else if (!IS_WIDESCREEN && (interfaceOrientation == UIInterfaceOrientationPortrait)) { 
// .... 
} else if(IS_WIDESCREEN && (interfaceOrientation == UIInterfaceOrientationLandscapeRight)) { 
// .... 
} 

if y ou're使用這裏面shouldAutoRotateToInterfaceOrientation,因爲你如果在邏輯&&表達式中使用恆定的恆定值與IS_WIDESCREEN

+0

真棒,做了伎倆!我會在SO解除時限時接受:-) –

1

,你得到的警告,因爲常數是無關緊要的。想象一下這個常數是非負的。 if (x && non-neg-constant)的結果與if (x)相同。同樣,如果常數爲零,則if (x && 0)永遠不會成立。

因此,編譯器警告您,並暗示也許你正在嘗試做的按位操作,檢查特定的位,看它是否被設置。

+0

+1謝謝您對位的解釋:-) –