2013-04-29 3 views

ответ

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; 

является esentially такой же, как:

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 используется с простой истина/ложь алгебры.

Существует некоторая взаимосвязь между двумя (побитовыми или может быть понята как логическая или между битами в одном и том же положении), но это о ней.

+2

+1 большой ответ. – Popeye

+0

@ Попей: спасибо! –

4

The | символ обозначает инклюзивную или поразрядную операцию. который работает в соответствии с посылкой с совпадением битовых строк двух объектов.

Если у вас есть битовая строка 1101, а другая 1001 включительно или из двух будет производить 1011. В принципе, если текущий бит в обеих строках одинаковый, тогда на его месте выводится 1, иначе 0.

10

| является побитовым оператором OR в C (и, следовательно, в Objective-C).

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

В контексте вы спросили о, она используется для объединения двух значений флага.

2

То есть побитовое ИЛИ операции, может быть, это может помочь вам: Bitwise operation

Смежные вопросы