0b" />

位移枚举

您所在的位置:网站首页 循环左右移位是什么意思呀 位移枚举

位移枚举

2024-05-08 18:23| 来源: 网络整理| 查看: 265

了解位移枚举之前,我们先回顾一下C语言位运算符。

1 0b0b0010 if (type & BDRequestOptionFailure) { NSLog(@"BDRequestOptionFailure"); } // 0b1111 & 0b0100 ---> 0b0b0100 if (type & BDRequestOptionProcessing) { NSLog(@"BDRequestOptionProcessing"); } // 0b1111 & 0b1000 ---> 0b0b1000 if (type & BDRequestOptionAnimate) { NSLog(@"BDRequestOptionAnimate"); } }

 

另,默认的,如果开发中枚举值传0,意味着不做任何操作。

例如:

// 传0,不打印任何值 [self test:0];

 

具体用途:

// 以下所说的 0 或 1,均指二进制数字中的 0 或 1 // 1、赋值。 self.requestOption = BDRequestOptionSuccess | BDRequestOptionFailure | BDRequestOptionProcessing | BDRequestOptionAnimate; // 2、判断是否包含。 // &:按位与,1与任意数等于任意数本身,0与任意数等于0,即1&x=x,0&x=0 if (self.requestOption & BDRequestOptionSuccess) { NSLog(@"已包含了该枚举值"); } else { NSLog(@"不包含该枚举值"); } // 3、累加。 累加已经累加过的枚举值, 虽然枚举变量的值不会有变动,但这样将会误导阅读代码的人。 // |: 按位或,x|y中只要有一个1则结果为1;反之为0 self.requestOption |= BDRequestOptionSuccess; // 4、累减。 如果累减不存在的枚举值, 那么本次累减的枚举值,会自动累加上去。 // ^:按位异或,x^y相等则为0,不等则为1 self.requestOption ^= BDRequestOptionSuccess;

 

 

OC中的用法:

NSString *string = @"Learning"; [string boundingRectWithSize:CGSizeMake(CGRectGetWidth(self.view.frame), MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12.f]} context:nil];

上面传值:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine

逻辑处理:

1 // 对传入的option逻辑处理 2 if (option & NSStringDrawingUsesLineFragmentOrigin) { 3 // 包含 NSStringDrawingUsesLineFragmentOrigin 4 } else { 5 // 未包含 NSStringDrawingUsesLineFragmentOrigin 6 } 7 if (option & NSStringDrawingTruncatesLastVisibleLine) { 8 // 包含 NSStringDrawingTruncatesLastVisibleLine 9 } else { 10 // 未包含 NSStringDrawingTruncatesLastVisibleLine 11 }

对于位移枚举的具体使用方法,建议可以查看一些三方库,例如SDWebImage等!

尊重作者劳动成果,转载请注明: 【kingdev】



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3