MPMoviePlayerController インスタンスがあります。多くの値のいずれかについて、そのplaybackStateプロパティを確認したいと思います。そのため、私は次のようなことをします:
if (moviePlayer.playbackState == (MPMoviePlaybackStateStopped ||
MPMoviePlaybackStatePlaying ||
MPMoviePlaybackStatePaused)) {
// ...
// Perform some logic
// ...
}
これは期待どおりに機能しますが、コンパイラの警告が発生します。
論理 '||' の使用 定数オペランドで。
コンパイラの修正は、|
代わりにビット演算子を使用することです。Stack Overflow で検索すると、同じことを示唆する回答がいくつか見つかります。しかし、ビットごとの OR を使用することは、ここで必要なものではありません。
MPMoviePlaybackState
MPMoviePlayerController.h で宣言されています。
enum {
MPMoviePlaybackStateStopped,
MPMoviePlaybackStatePlaying,
MPMoviePlaybackStatePaused,
MPMoviePlaybackStateInterrupted,
MPMoviePlaybackStateSeekingForward,
MPMoviePlaybackStateSeekingBackward
};
typedef NSInteger MPMoviePlaybackState;
これはビットマスクではありません (また、ビットマスクであってもあまり意味がありません。列挙された値は相互に排他的なモードであり、組み合わせられるフラグではありません)。私は本当に論理を使いたいです||
。
(私の特定のケースでは、基になる値が 0,1,2 の場合、ビットごとの例が機能する可能性がありますが、それは単なる偶然です。)
警告を回避するにはどのように言い換えるべきですか、または警告#pragma clang diagnostic ignored ...
を黙らせるには何を使用できますか?
(そのようなすべての診断のリストを参照するためのボーナス ポイント — マニュアルで見つけることができないようです。)
前もって感謝します!