【发布时间】:2012-05-02 13:34:07
【问题描述】:
-
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:]是正确的使用方法,因为accepted answer to Best way to implement Enums with Core Data 使用它。例如:[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]
【问题讨论】:
标签: enums typedef nsnumber nsinteger nsuinteger