NSNumber与NSInteger的区别

来源:互联网 发布:外汇占款 知乎 编辑:程序博客网 时间:2024/05/21 17:38

NSNumber 所拥有的类方法,如下:

+ (NSNumber*)numberWithChar: (char)value;

+ (NSNumber*)numberWithInt: (int)value;

+ (NSNumber*)numberWithFloat: (float)value;

  • (NSNumber*)numberWithBool: (BOOL) value;


NSNumber     *myNumber,*floatnumber,*intNumber,*doublenumber,*charNumber;


myNumber = [NSNumber numberWithLong:0xabcdef];        

floatnumber = [NSNumber numberWithFloat:12.33];        

intNumber = [NSNumber numberWithInt:100];       

doublenumber = [NSNumber numberWithDouble:12345e+15];       

charNumber = [NSNumber numberWithChar:’X'];


将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:

- (char)charValue;

- (int)intValue;

- (float)floatValue;

  • (BOOL)boolValue;
  • (NSString*)stringValue;


myInt = [intNumber intValue]; //获取对象的整型值  

 //[floatnumber floatValue];      

//[doublenumber doubleValue];      

//[charNumber charValue];


有了以上概念,我们来考一个面试题。 以下code 编译是否有误?

NSMutableArray  *myArray = [[NSMutableArray alloc] init ];

[myArray addObject: 6 ];

这样是会引发编译错误的,因为NSMutableArray中所要存放的是一个对象,但‘6’不是。这怎么办呢? 需要用到 NSNumber。

NSMutableArray  *myArray = [[NSMutableArray alloc] init ];

[myArray addObject: [NSNumber numberWithInt:6] ];

NSLog(@"array content is %@", myArray); 

0 0
原创粉丝点击