我想学习位掩码。据我了解,这意味着将某种类型的二进制值存储到一个变量中。
如果上面的假设是真的,我想我可以做这样的事情:
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 表示有它。
如果需要,您能否就语法提出建议并解释特定方面?