码迷,mamicode.com
首页 > 其他好文 > 详细

oc_NSInteger 和 NSNumber

时间:2015-01-01 21:13:44      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

Objective-C 支持的类型有两种:基本类型和类。

基本类型,如同 C 语言中的 int 类型一样,拿来就可以直接用。而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值。类的初始化,需用类自身的方法(类方法)。代码中所创建的对象,不用后,还得记着释放。

NSNumber 是类,而 NSInteger 只不过是个基本类型。

既然 NSInteger 是基本类型,那么,使用起来就非常简单。声明一个变量,NSInteger myInt;直接赋值就可以了。 比如:myInt = 8;

谈到“类”,总是给人以抽象的感觉。像 NSNumber 这个类型,从字面上看,它属于char、int、long、double中的哪一种呢?其实,NSNumber 可以隶属其中的任意一种类型。既然 NSNumber 是类,就应该遵循“类”的规则。通过类方法来创建、初始化一个类的对象。

NSNumber 所拥有的类方法,如下:
1 + (NSNumber*)numberWithChar: (char)value;
2 + (NSNumber*)numberWithInt: (int)value;
3 + (NSNumber*)numberWithFloat: (float)value;
4 + (NSNumber*)numberWithBool: (BOOL) value;
例如:
1 NSNumber *myNumber, *floatnumber, *intNumber, *doublenumber, *charNumber; //定义各种类型
2 myNumber = [NSNumber numberWithLong:0xabcdef];  //分别赋值
3 floatnumber = [NSNumber numberWithFloat:12.33];
4 intNumber = [NSNumber numberWithInt:100];
5 doublenumber = [NSNumber numberWithDouble:12345e+15];
6 charNumber = [NSNumber numberWithChar:X];
将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:
1 - (char) charValue;
2 - (int) intValue;
3 - (float) floatValue;
4 - (BOOL) boolValue;
5 - (NSString*) stringValue;

1 //获取对象的各种类型的值:
2 myInt = [intNumber intValue]; 
3 myInt = [floatnumber floatValue];
4 myInt = [doublenumber doubleValue];
5 myInt = [charNumber charValue];
有了以上概念,以下code 编译是否有误?
1 NSMutableArray *myArray = [[NSMutableArray alloc] init ];
2 [myArray addObject: 6];
这样是会引发编译错误的,因为NSMutableArray中所要存放的是一个对象,但‘6’不是。这怎么办呢? 需要用到 NSNumber。
1 NSMutableArray *myArray = [[NSMutableArray alloc] init ];
2 [myArray addObject: [NSNumber numberWithInt:6]];
3 NSLog(@"array content is %@", myArray);

oc_NSInteger 和 NSNumber

标签:

原文地址:http://www.cnblogs.com/iLillian/p/4197746.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!