1  Number Objects
integers, floats, and longs在object-c中是基本的数据类型,不是数据对象。
为什么需要使用数据对象:假如你想把数据存到NSArray中,NSArray是不能存储基本的数据类型的,所以需要把基本的数据类型
转化为数据对象,然后存到NSArray中去。 所以这是数据对象的用处。
1.1 创建一个整型的数据对象
NSNumber *intNumber;
NSInteger myInt;

intNumber = [NSNumber numberWithInteger: 100];
还可以采用这样的初始化:intNumber = @100;
//把数据对象转化成基本数据类型
myInt = [intNumber integerValue];
NSLog (@"%li", (long) myInt);
注意如下访问是错误的:
NSLog (@"%li", (long) [myNumber integerValue]);

2 数据对象的比较
isEqualToNumber : 比较2个数据对象是否相等
compare:               比较2个数据对象的大小
A compare:B
NSOrderedAscending  : A<B
NSOrderedSame        : A=B

NSOrderedDescending: A>B


3 数据对象不可改变
NSNumber *myNumber = [[NSNumber alloc] initWithInt: 50];
...
[myNumber initWithInt: 1000];

这样的代码会让程序挂掉, 数据对象只能被初始化一次


4 numberWithInt: VS numberWithInteger:  
使用numberWithInt:方法只能用intValue把它的值还原到基本类型,可以使用%i 打印出来

使用 numberWithInteger:方法,只能用integerValue把它的值还原到基本类型,可以用%li打印出来它的值


5 api应用如下:

numberWithChar:                initWithChar:                          charValue
numberWithUnsignedChar:   initWithUnsignedChar:             unsignedCharValue
numberWithShort:               initWithShort:                          shortValue
numberWithUnsignedShort:   initWithUnsignedShort:           unsignedShortValue
numberWithInteger:              initWithInteger:                     integerValue
numberWithUnsignedInteger:   initWithUnsignedInteger:       unsignedIntegerValue
numberWithInt:                      initWithInt:                           intValue
numberWithUnsignedInt:        initWithUnsignedInt:               unsignedIntValue
numberWithLong:                  initWithLong:                         longValue
numberWithUnsignedLong:     initWithUnsignedLong:            unsignedLongValue
numberWithLongLong:           initWithLongLong:                  longlongValue
numberWithUnsignedLongLong:  initWithUnsignedLongLong:  unsignedLongLongValue
numberWithFloat:                 initWithFloat:                         floatValue
numberWithDouble:              initWithDouble:                      doubleValue
numberWithBool:                  initWithBool:                          boolValue