1

私はifelseステートメントを持っていて、そこに2つの完全に適切な引数がありますが、2番目の引数は私にこの警告を与えます:

定数オペランドでの論理'&&'の使用

使用されるコードは次のとおりです。

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

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

}

注:IS_WIDESCREEN-iPhone5画面の測定値で定義されます。

これがなぜなのか、何か考えはありますか?

///編集:

iPhone5の定義方法を追加しました

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

すべてがこのメソッドの中にあります:

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

2 に答える 2

1

私はそれがすべきだと思います

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

shouldAutoRotateToInterfaceOrientation定数値をと比較しているためにこれを内部で使用している場合IS_WIDESCREEN

于 2012-10-11T22:14:10.680 に答える
1

論理&&式で定数を使用すると、定数は無関係であるため、警告が表示されます。定数が負ではないと想像してください。の結果はif (x && non-neg-constant)と同じですif (x)。同様に、定数がゼロの場合、if (x && 0)真になることはありません。

したがって、コンパイラは警告を発し、ビット単位の演算を実行しようとしている可能性があることを示唆し、特定のビットが設定されているかどうかを確認します。

于 2012-10-11T22:19:34.020 に答える