14
  1. 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:]それを使用しているため、使用する正しい方法だと思います。例えば:

    [NSNumber numberWithInt:UIViewAnimationCurveLinear]
    

    しかし、もし+[NSNumber numberWithInt:]正しいなら、なぜですか?

  2. ビット単位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;
    

    明示的なafter+[NSNumber numberWithUnsignedInteger:]があるため、これが正しい使用方法だと思います。正しい?例えば:NSUIntegertypedef

    [NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone]
    
4

2 に答える 2

7

[NSNumber numberWithInt:your_enum_int_variable];

于 2012-12-13T00:31:01.920 に答える