ビットマスキングについて学びたいです。私が理解している限りでは、特定の型のバイナリ値を 1 つの変数に格納する手段です。
上記の仮定が正しい場合、次のようなことができると考えました。
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は、1 人の人物により多くの特性を割り当てるにはどうすればよいですか?
質問 2は、列挙型アイテムにますます多くの数値を入力する必要がありますか、またはこれを示す方法はありますか?
最終的には、次のようなことを達成したいと考えています。
Person *john = [[Person alloc] init];
//here code that assigns john three traits: TraitsCharacterHonest,
//TraitsCharacterOptimistic and TraitsPhysicalBeautiful.
正しく理解すれば、
john.traits は 100011. である必要があります。右から読み取り、各場所はその特定の列挙値/特性を表し、0 はそれがないことを意味し、1 はそれがあることを意味します。
必要に応じて、構文に関するアドバイスと特定の側面について説明していただけますか?