我有一个 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 ...
可以用什么来消除警告?
(指向所有此类诊断列表的奖励积分 - 我似乎无法在手册中找到一个。)
提前致谢!