77 lines · plain
1#import <objc/NSObject.h>2 3typedef struct {4 unsigned char fieldOne : 1;5 unsigned char fieldTwo : 1;6 unsigned char fieldThree : 1;7 unsigned char fieldFour : 1;8 unsigned char fieldFive : 1;9} UCBitFields;10 11@interface HasBitfield : NSObject {12@public13 unsigned field1 : 1;14 unsigned field2 : 1;15};16 17-(id)init;18@end19 20@implementation HasBitfield21-(id)init {22 self = [super init];23 field1 = 0;24 field2 = 1;25 return self;26}27@end28 29@interface ContainsAHasBitfield : NSObject {30@public31 HasBitfield *hb;32};33-(id)init;34@end35 36@implementation ContainsAHasBitfield37-(id)init {38 self = [super init];39 hb = [[HasBitfield alloc] init];40 return self;41}42 43@end44 45@interface HasBitfield2 : NSObject {46@public47 unsigned int x;48 49 unsigned field1 : 15;50 unsigned field2 : 4;51 unsigned field3 : 4;52}53@end54 55@implementation HasBitfield256- (id)init {57 return (self = [super init]);58}59@end60 61int main(int argc, const char * argv[]) {62 ContainsAHasBitfield *chb = [[ContainsAHasBitfield alloc] init];63 HasBitfield2 *hb2 = [[HasBitfield2 alloc] init];64 65 hb2->x = 100;66 hb2->field1 = 10;67 hb2->field2 = 3;68 hb2->field3 = 4;69 70 UCBitFields myField = {0};71 myField.fieldTwo = 1;72 myField.fieldFive = 1;73 74 return 0; // break here75}76 77