-
Является ли каждое значение a
typedef enum
обработанным какint
?Например, учитывая следующее
typedef enum
:// UIView.h typedef enum { UIViewAnimationCurveEaseInOut, UIViewAnimationCurveEaseIn, UIViewAnimationCurveEaseOut, UIViewAnimationCurveLinear } UIViewAnimationCurve;
Как узнать, какой метод использовать для создания
NSNumber
?+ (NSNumber *)numberWithShort:(short)value; + (NSNumber *)numberWithUnsignedShort:(unsigned short)value; + (NSNumber *)numberWithInt:(int)value; + (NSNumber *)numberWithUnsignedInt:(unsigned int)value; + (NSNumber *)numberWithLong:(long)value; + (NSNumber *)numberWithUnsignedLong:(unsigned long)value; + (NSNumber *)numberWithLongLong:(long long)value; + (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value; + (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0); + (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
Я думаю, что
+[NSNumber numberWithInt:]
- правильный метод для использования, потому что принятый ответ на лучший способ реализации Enums с основными данными использует его. Например:.[NSNumber numberWithInt:UIViewAnimationCurveLinear]
Но если
+[NSNumber numberWithInt:]
правильно, то почему? -
Для поразрядного
enum
, например:enum { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 << 0, UIViewAutoresizingFlexibleWidth = 1 << 1, UIViewAutoresizingFlexibleRightMargin = 1 << 2, UIViewAutoresizingFlexibleTopMargin = 1 << 3, UIViewAutoresizingFlexibleHeight = 1 << 4, UIViewAutoresizingFlexibleBottomMargin = 1 << 5 }; typedef NSUInteger UIViewAutoresizing;
Я предполагаю, что
+[NSNumber numberWithUnsignedInteger:]
- правильный метод для использования, потому что послеtypedef
существует явныйNSUInteger
. Верный? Например:.[NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone]
Как преобразовать перечисление typedef в NSNumber?
Ответ 1
В настоящее время можно использовать современный синтаксис:
@(UIViewAnimationCurveLinear)
Ответ 2
[Номер NSNumberWithInt: your_enum_int_variable];