Я хотел бы изучить бит-маскировку. Насколько я понимаю, это средство для хранения двоичных значений определенного типа в одной переменной.
Если это предположение верно, я решил, что могу сделать что-то вроде этого:
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., читающий справа и каждое место, представляющее это конкретное значение/черту enum..and 0, означающее отсутствие его, и 1 означает его наличие.
Можете ли вы посоветовать синтаксис и объяснить конкретный аспект, если это необходимо?