Ответ 1
В настоящее время можно использовать современный синтаксис:
@(UIViewAnimationCurveLinear)
Является ли каждое значение 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]
В настоящее время можно использовать современный синтаксис:
@(UIViewAnimationCurveLinear)
[Номер NSNumberWithInt: your_enum_int_variable];