Дело в том, что это флаги, предназначенные для использования в качестве битовой маски, что приводит к проблемам с перечислениями. Например, если это будет выглядеть так:
typedef enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
} UIViewAutoresizing;
И вы бы вызвали setAutoresizingMask:
для представления с UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
, компилятор будет жаловаться, и вы должны явно привести его обратно к типу UIViewAutoresizing
. Однако NSUInteger
может принимать битовую маску.
Кроме того, все, что сказал lef2 о том, что NSUInteger
не является объектом ObjC.