gpt4 book ai didi

iPhone SDK << 含义?

转载 作者:行者123 更新时间:2023-12-03 19:04:44 29 4
gpt4 key购买 nike

嗨,另一个愚蠢的简单问题。我注意到在Apple框架中的某些typedef中使用符号"<<"谁能告诉我这是什么意思?:


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

编辑:好吧,我现在明白了如何以及为什么要使用左位移位,我的下一个问题是如何测试该值是否具有某种特征,使用/then 语句还是 switch/case 方法?

最佳答案

这是一种创建易于混合的常量的方法。例如,您可以使用 API 来订购冰淇淋,并且可以选择 Vanilla 、巧克力和草莓口味。您可以使用 bool 值,但这有点繁重:

- (void) iceCreamWithVanilla: (BOOL) v chocolate: (BOOL) ch strawerry: (BOOL) st;

解决这个问题的一个好技巧是使用数字,您可以使用简单的添加来混合口味。假设 1 代表 Vanilla ,2 代表巧克力,4 代表草莓:

- (void) iceCreamWithFlavours: (NSUInteger) flavours;

现在,如果数字设置了最右边的位,则其中有 Vanilla 味,另一位代表巧克力,右起第三位代表草莓。例如 Vanilla + 巧克力将是 1+2=3 十进制( 011 二进制)。

位移运算符x << y取左边的数字( x )并移动其位 y次。它是创建数字常量的好工具:

1 << 0 = 001 // vanilla
1 << 1 = 010 // chocolate
1 << 2 = 100 // strawberry

瞧!现在,当您想要具有灵活左边距和灵活右边距的 View 时,您可以使用按位或混合标志:FlexibleRightMargin | FlexibleLeftMargin1<<2 | 1<<0100 | 001101 。在接收端,该方法可以使用逻辑与屏蔽感兴趣的位:

// 101 & 100 = 100 or 4 decimal, which boolifies as YES
BOOL flexiRight = givenNumber & FlexibleRightMargin;

希望有帮助。

关于iPhone SDK << 含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3635254/

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