1 Number Objects
intNumber = [NSNumber numberWithInteger: 100];
还可以采用这样的初始化:intNumber = @100;
2 数据对象的比较
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) 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];
...
[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
转载于:https://blog.51cto.com/shenhark/1400391