2010-08-02 11 views

Odpowiedz

19

Najpierw zadeklarować swoje flagi w nagłówku:

enum 
{ 
    AZApple = (1 << 0), 
    AZBanana = (1 << 1), 
    AZClementine = (1 << 2), 
    AZDurian = (1 << 3) 
}; 

typedef NSUInteger AZFruitFlags; 

(1 << 0) aż do (1 << 3) reprezentują pojedyncze bity liczby całkowitej, które można “ zamaskowania ” iz całkowitej. Na przykład, przyjmując NSUInteger ma długość 32 bitów, a ktoś wybiera Apple i durian, wtedy liczba całkowita będzie wyglądać następująco:

0000 0000 0000 0000 0000 0000 0000 1001 
            | |- Apple bit 
            |---- Durian bit 

Zazwyczaj metoda musi przyjąć liczbę całkowitą bez znaku argument:

- (void) doSomethingWithFlags:(AZFruitFlags) flags 
{ 
    if (flags & AZApple) 
    { 
     // do something with apple 

     if (flags & AZClementine) 
     { 
      // this part only done if Apple AND Clementine chosen 
     } 
    } 

    if ((flags & AZBanana) || (flags & AZDurian)) 
    { 
     // do something if either Banana or Durian was provided 
    } 
} 
+0

Wielkie dzięki! Naprawdę pomógł. –

Powiązane problemy