union 类型的使用
@implementation test_union
{
// 联合体
union {
char bits;
// 位域
struct {
char front : 1;
char back : 1;
char left : 1;
char right : 1;
};
} _direction;
}
-(void)test_un
{
_direction.bits = 0b0000000000;
_direction.front = 0;
_direction.back = 1;
}
union 大小为 siziof(char),每个bit位的命名依次位front,back,left,right,这样可以更充分的利用数据的每个bit
对比宏命令的形式
#define LGDirectionFrontMask (1 << 0)
#define LGDirectionBackMask (1 << 1)
#define LGDirectionLeftMask (1 << 2)
#define LGDirectionRightMask (1 << 3)
if (YES) {
_direction.bits |= LGDirectionFrontMask;
} else {
_direction.bits &= ~LGDirectionFrontMask;
}
对比enum类型
typedef enum TagMessageLevel
{
TagMessageLevelNomal = 150,
TagMessageLevelLow = 120,
TagMessageLevelHigh = 180,
}vTagMessageLevel;
enum类型