Enums 如何将typedef枚举转换为NSNumber?

Enums 如何将typedef枚举转换为NSNumber?,enums,typedef,nsnumber,nsinteger,nsuinteger,Enums,Typedef,Nsnumber,Nsinteger,Nsuinteger,typedef enum的每个值是否都被视为int 例如,给定以下typedef enum: // UIView.h typedef enum { UIViewAnimationCurveEaseInOut, UIViewAnimationCurveEaseIn, UIViewAnimationCurveEaseOut, UIViewAnimationCurveLinear } UIViewAnimationCurve; 如何知道使用哪种方法创建NSNumbe

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 numberwhithint::
是正确的方法,因为使用它。例如:

[NSNumber numberWithInt:UIViewAnimationCurveLinear]
但是,如果
+[NSNumber numberwhithint:
是正确的,那么为什么呢

  • 对于按位
    枚举
    ,例如:

    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 numberWithInt:your_enum_int_变量]

    现在可以使用现代语法:


    @(UIViewAnimationCurveLinear)

    你真是棒极了!谢谢你。
    [NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone]