在object-c中,集合只能存放object,对于基本类型如int、float、bool、char和struct如CGPoint、CGSize、CGRect等,必须封装成object。
int、float、bool、char等可以用NSNumber来封装,NSNumber定义在NSValue头文件中,继承于NSValue。对应的装箱方法是:
- (id)initWithChar:(char)value;
- (id)initWithUnsignedChar:(unsignedchar)value;
- (id)initWithShort:(short)value;
- (id)initWithUnsignedShort:(unsignedshort)value;
- (id)initWithInt:(int)value;
- (id)initWithUnsignedInt:(unsignedint)value;
- (id)initWithLong:(long)value;
- (id)initWithUnsignedLong:(unsignedlong)value;
- (id)initWithLongLong:(longlong)value;
- (id)initWithUnsignedLongLong:(unsignedlong long)value;
- (id)initWithFloat:(float)value;
- (id)initWithDouble:(double)value;
- (id)initWithBool:(BOOL)value;
- (id)initWithInteger:(NSInteger)value NS_AVAILABLE(10_5,2_0);
- (id)initWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5,2_0);
+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsignedchar)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsignedshort)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsignedint)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsignedlong)value;
+ (NSNumber *)numberWithLongLong:(longlong)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsignedlong long)value;
+ (NSNumber *)numberWithFloat:(float)value;
+ (NSNumber *)numberWithDouble:(double)value;
+ (NSNumber *)numberWithBool:(BOOL)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5,2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5,2_0);
对应的拆箱方法是:
- (char)charValue;
- (unsignedchar)unsignedCharValue;
- (short)shortValue;
- (unsignedshort)unsignedShortValue;
- (int)intValue;
- (unsignedint)unsignedIntValue;
- (long)longValue;
- (unsignedlong)unsignedLongValue;
- (longlong)longLongValue;
- (unsignedlong long)unsignedLongLongValue;
- (float)floatValue;
- (double)doubleValue;
- (BOOL)boolValue;
- (NSInteger)integerValue NS_AVAILABLE(10_5,2_0);
- (NSUInteger)unsignedIntegerValue NS_AVAILABLE(10_5,2_0);
- (NSString *)stringValue;
NSValue对struct封装的方法定义在UIGeometry.h头文件中,对应的装箱方法有:
+ (NSValue *)valueWithCGPoint:(CGPoint)point;
+ (NSValue *)valueWithCGSize:(CGSize)size;
+ (NSValue *)valueWithCGRect:(CGRect)rect;
+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;
+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;
+ (NSValue *)valueWithUIOffset:(UIOffset)insetsNS_AVAILABLE_IOS(5_0);
- (CGPoint)CGPointValue;
- (CGSize)CGSizeValue;
- (CGRect)CGRectValue;
- (CGAffineTransform)CGAffineTransformValue;
- (UIEdgeInsets)UIEdgeInsetsValue;
- (UIOffset)UIOffsetValueNS_AVAILABLE_IOS(5_0);
比较方法如下:
– compare:
– isEqualToNumber:
获取封装的类型:
objCType