我想學習位掩碼。據我所知,這是將某種類型的二進制值存儲到一個變量中的方法。目標中的掩碼C
如果上述假設是真的,我想我可以做這樣的事情:
typedef NSUInteger Traits;
enum
{
TraitsCharacterHonest = 0,
TraitsCharacterOptimistic = 1,
TraitsCharacterPolite = 4,
TraitsCharacterDevious = 8,
TraitsPhysicalTall = 16,
TraitsPhysicalBeautiful = 32,
TraitsPhysicalFat = 64,
TraitsPhysicalBigEyes = 128,
TraitsPhysicalRedHair = 256,
};
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (strong, nonatomic) NSString *name;
@property (assign, nonatomic) Traits *traits;
@end
問題1是,我怎麼分配更多的性狀一個人呢?
問題2是,我必須將不斷增加的枚舉項數,或者有沒有辦法表明這一點?
最後,我想實現這樣的事情:
Person *john = [[Person alloc] init];
//here code that assigns john three traits: TraitsCharacterHonest,
//TraitsCharacterOptimistic and TraitsPhysicalBeautiful.
如果我理解正確的話,的
john.traits值應爲100011,右讀,代表特定的每個地方枚舉值/特徵.. 0意味着沒有它,1意味着它。
你可以請教關於語法的建議,並解釋一個特定的方面,如果需要?
是故意的,'TraitsCharacterHonest'有一個數值爲零?你不能在這裏使用零,因爲'x&0 == 0'用於任何整數'x',即這個特性永遠不會出現在任何人身上。在這個世界上沒有誠實的人。傷心的地方...... – Dirk
它就像普通的老C一樣 - Objective-C中沒有特別的設施用於位重要值。 –
這不是故意的,我沒有意識到。當然,第一項必須有1的值。 正確的順序是2的冪,是嗎? 2to0,2 to1,2to2 ie..1,2,4,8,16..etc .. –