我正在执行一些代码重构,并且遇到了一些以前从未见过的ivars语法。代码看起来像
@interface Object : NSObject {
@private BOOL aBool:1;
}
@end
我的问题是,该:1
怎么办?
对于ivar,此语法与在struct内部具有相同的含义。您要声明一个指定大小的位域。
在这种情况下,这可能对类的实际大小没有任何影响-我认为您分配的字节数不能少于-但如果您尝试将值放入变量,编译器会警告您对于您指定的位域大小来说,这太大了:
@interface BittyBoop : NSObject
{
unsigned char bit:1;
unsigned char bits:4;
}
@end
@implementation BittyBoop
- (void)doThatThingIDo
{
bit = 2; // Implicit truncation from 'int' to bitfield changes value from 2 to 0
bits = 2; // no warning
}
@end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句