2010-08-02 9 views

cevap

19

İlk olarak bir başlıkta Bayraklarınızı beyan: Eğer “ ve bir tamsayı dışına ” maskeleyebilir bir tamsayı tek bitleri temsil

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

typedef NSUInteger AZFruitFlags; 

(1 << 0) aracılığıyla (1 << 3) için. Örneğin, NSUInteger varsayarak 32-bit, ve birisi elma ve Durian hem seçmiştir, o zaman tamsayı şu şekilde görünecektir:

- (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 
    } 
} 
:

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

Tipik senin yöntem işaretsiz tamsayı argüman atması gereken

+0

Çok teşekkürler! Gerçekten yardım etti. –