2012-04-21 32 views
11
  1. क्या typedef enum का प्रत्येक मान int के रूप में माना जाता है?typedef enum से NSNumber को कैसे परिवर्तित करें?

    जैसे, दिए गए निम्न 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:] क्योंकि accepted answer to Best way to implement Enums with Core Data इसे इस्तेमाल करता है उपयोग करने के लिए सही तरीका है। उदा .:

    [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; 
    

    मेरा अनुमान है कि +[NSNumber numberWithUnsignedInteger:] है क्योंकि वहाँ कोई स्पष्ट NSUIntegertypedef के बाद उपयोग करने के लिए सही तरीका है कि के लिए

    । सही बात? उदा .:

    [NSNumber numberWithUnsignedInteger:UIViewAutoresizingNone] 
    

उत्तर

16

आजकल आधुनिक वाक्य रचना के लिए इस्तेमाल किया जा सकता है:

@(UIViewAnimationCurveLinear)

6

[NSNumber numberWithInt: your_enum_int_variable];

+0

आप झूमने! इसके लिए धन्यवाद। –