self.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleWidth;
源代码如上所示。 想知道什么符号“|”代表? 非常感谢您的回答并感谢您的回复;)
答案 0 :(得分:12)
简而言之:这是bitwise OR操作。
它通常用于生成位掩码。
通过此操作,您可以将标记组合成二进制数。
例如: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
使用简单真/假代数的Logical OR不会混淆按位OR。
两者之间存在某种关系(按位或可以理解为逻辑或位于同一位置的位之间),但这就是它。
答案 1 :(得分:10)
|是C中的按位OR运算符(因此在Objective-C中)。
请参阅http://en.m.wikipedia.org/wiki/Bitwise_operations_in_C
在您询问的上下文中,它被用于组合两个标志值。
答案 2 :(得分:4)
| character表示包含或按位操作。它在匹配两个对象的位串的前提下运行。
如果你有一个位串1101而另一个1001包含两个或两个会产生1011.基本上如果两个字符串中的当前位相同,则输出1,否则为0。
答案 3 :(得分:2)
这是一个按位OR运算,也许这可以帮助你:Bitwise operation