This question already has answers here:
Multiple value enum in Obj-C

(2个答案)


7年前关闭。




我正在研究如何在Objective-C中使用UISwipeGestureRecognizer类,并且碰巧遇到了一个名为UISwipeGestureRecognizerDirection的枚举。

苹果将​​其定义为:
typedef enum {
   UISwipeGestureRecognizerDirectionRight = 1 << 0,
   UISwipeGestureRecognizerDirectionLeft  = 1 << 1,
   UISwipeGestureRecognizerDirectionUp    = 1 << 2,
   UISwipeGestureRecognizerDirectionDown  = 1 << 3
}

我不确定编译器如何解释上述内容,特别是<
任何方向都将不胜感激。提前致谢!

最佳答案

这是按位左移。这相当于

typedef enum {
   UISwipeGestureRecognizerDirectionRight = 1,
   UISwipeGestureRecognizerDirectionLeft  = 2,
   UISwipeGestureRecognizerDirectionUp    = 4,
   UISwipeGestureRecognizerDirectionDown  = 8
}

允许按位测试很方便。实际值没有什么意义,只不过它们都可以打包成一个变量-枚举值可以是任何东西,只要它们是唯一的即可。

关于ios - 需要帮助来了解<< <<位运算符在Objective-C中的工作方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17606480/

10-08 21:05