gpt4 book ai didi

objective-c - 如何使用 typedef 枚举创建 "or' ed"开关?

转载 作者:行者123 更新时间:2023-12-03 16:58:26 25 4
gpt4 key购买 nike

我有点喜欢enums 。它们的语法看起来很神秘,而且我还没有找到关于它们无可否认的正确使用的明确引用点..但假设我有..

typedef enum {
OrientTop,
OrientBottom,
OrientFiesta
} Orient;

我希望能够像我所做的那样,例如,当多个选择可能适用/需要时,其他常量,只需这样做......

 self.orientation = OrientTop | OrientFiesta;  // NO NO WORK-O!

就像人们所做的那样......

self.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;

或者也..

it = [[NSThing alloc]initOptions: NSStupid | NSSpicy | NSSassy];

这也很好......而不是......

 if ((o == OrientTop ) || ( o == OrientBottom))

我可以使用...

if (o == OrientTop || OrientBottom) 

最重要的是......如何检查多个案例,la..

switch (orientation) {
case OrientTop | OrientBottom:

或者类似的东西.. 呃,哦..你们太慢了..所以,呃..我只需要......

case OrientLeft:
case OrientRight: { // blah blah blah
break; }

(但对于第一部分..)苹果/比我更聪明的人正在使用什么额外的“ secret 酱汁”来给予他们的 typedef相比之下,是不是那种额外的活力让我的味道如此,呃……平淡……?

最佳答案

看起来好像typedef(例如NSViewWidthSizing)实际上是位掩码,它允许您非常喜欢的良好的ORing操作。在一些 UIKit 元素的标题中,您可以明白我的意思:

enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;

我直接从 very helpful site that explains in more detail 上抢走了它。 ,但您也可以通过按住 Command ⌘ 并单击常量或 typedef 来检查任何常量的枚举。

关于objective-c - 如何使用 typedef 枚举创建 "or' ed"开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11727192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com