3
self.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleWidth;

源代码如上所示。想知道符号“|”是什么 代表?非常感谢您的回答并感谢您的回复;)

4

4 回答 4

12

简而言之:这是一个按位或运算。

它通常用于生成位掩码。

通过此操作,您可以将标志组合成二进制数。

例如:UIViewAutoresizing的可能标志是:

enum {
   UIViewAutoresizingNone                 = 0,           // = 0b 0000 0000 =  0
   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,      // = 0b 0000 0001 =  1
   UIViewAutoresizingFlexibleWidth        = 1 << 1,      // = 0b 0000 0010 =  2
   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,      // = 0b 0000 0100 =  4
   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,      // = 0b 0000 1000 =  8
   UIViewAutoresizingFlexibleHeight       = 1 << 4,      // = 0b 0001 0000 = 16
   UIViewAutoresizingFlexibleBottomMargin = 1 << 5       // = 0b 0010 0000 = 32
};
typedef NSUInteger UIViewAutoresizing;

陈述:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleWidth;

本质上等同于:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth;

(因为两个操作数相同)。

如果您要问:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

这将设置self.autoresizingMask为:

(1<<1)|(1<<4)=(0b 0000 0010)|(0b 0001 0000)=0b 0001 0010 = 9

按位或不要与与简单真/假代数一起使用的逻辑或混淆。

两者之间存在某种关系(按位或可以理解为逻辑或同一位置的位之间),但仅此而已。

于 2013-04-29T08:36:29.480 回答
10

| 是 C 中的按位或运算符(因此在 Objective-C 中)。

http://en.m.wikipedia.org/wiki/Bitwise_operations_in_C

在您询问的上下文中,它用于组合两个标志值。

于 2013-04-29T08:37:27.300 回答
4

该| 字符表示包含或按位运算。它在匹配两个对象的位串的前提下运行。

如果您有一个位串 1101 和另一个 1001,则两者的包含或两者将产生 1011。基本上,如果两个字符串中的当前位相同,则在其位置输出 1,否则为 0。

于 2013-04-29T08:36:41.887 回答
2

那是按位或运算,也许这可以帮助您:按位运算

于 2013-04-29T08:37:54.113 回答