2012-04-21 19 views
11
  1. typedef enum'un her değeri int olarak mı işlem görür?typedef enum NSNumber nasıl dönüştürülecek?

    Ör verilen typedef enum aşağıdaki:

    // UIView.h 
    
    typedef enum { 
        UIViewAnimationCurveEaseInOut, 
        UIViewAnimationCurveEaseIn, 
        UIViewAnimationCurveEaseOut, 
        UIViewAnimationCurveLinear 
    } UIViewAnimationCurve; 
    

    Nasıl NSNumber oluşturmak için kullanılacak yöntemi biliyor musunuz?

    + (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); 
    

    Ben +[NSNumber numberWithInt:]accepted answer to Best way to implement Enums with Core Data bunu kullandığı için kullanılacak doğru yöntem olduğunu düşünüyorum. Örn .: +[NSNumber numberWithInt:] eğer

    [NSNumber numberWithInt:UIViewAnimationCurveLinear] 
    

    Ama doğrudur, o zaman niçin? bitsel enum, ör .:

    enum { 
        UIViewAutoresizingNone     = 0, 
        UIViewAutoresizingFlexibleLeftMargin = 1 << 0, 
        UIViewAutoresizingFlexibleWidth  = 1 << 1, 
        UIViewAutoresizingFlexibleRightMargin = 1 << 2, 
        UIViewAutoresizingFlexibleTopMargin = 1 << 3, 
        UIViewAutoresizingFlexibleHeight  = 1 << 4, 
        UIViewAutoresizingFlexibleBottomMargin = 1 << 5 
    }; 
    typedef NSUInteger UIViewAutoresizing; 
    

    Ben +[NSNumber numberWithUnsignedInteger:]typedef sonra açık bir NSUInteger olduğundan kullanılacak doğru yöntem olduğunu tahmin ediyorum İçin

  2. . Doğru? Örn .:

    [NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone] 
    

cevap

16

Günümüzde çağdaş sözdizimi kullanılabilir:

@(UIViewAnimationCurveLinear)

6

[NSNumber numberWithInt: your_enum_int_variable];

+0

Harikasınız! Bunun için teşekkür ederiz. –