Objective--C中的NSNumber类

来源:互联网 发布:那些软件可以赚集分宝 编辑:程序博客网 时间:2024/05/01 14:51

int, float, long类型都是Objective-C 中的基本数据类型,它们都不是对象,也就是说不能向这些数据类型的数据发送消息。有的时候,需要将这些数值作为对象来使用,比如使用NSArray 对象创建一个数组,他要求存储的数据就必须是对象,因此,不能把任何基本数据类型直接存储到数组中。这个时候就可以使用 NSNumber类来完成,它会依据这些数据的类型来创建对象.


代码清单:


#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {    @autoreleasepool {        // insert code here...        NSNumber *myNumber, *floatNumber, *intNumber;        //NSInteger *myInt = 256;//关于NSInteger在后面说明                //使用整形数据        intNumber = [NSNumber numberWithInteger:100];        //myInt = [intNumber integerValue]; //本条语句和下面的一条语句会有警告出现        //NSLog(@"%li\n",myInt);    //输出整数100的值        NSLog(@"%li\n",(long)[intNumber integerValue]);                //long类型数据        myNumber = [NSNumber numberWithLong:0xabcdef];//输入值为16进制长整型        NSLog(@"0x%lx\n",[myNumber longValue]);//输出16进制值                //char        myNumber = [NSNumber numberWithChar:'G'];        NSLog(@"%c\n",[myNumber charValue]);                //float        floatNumber = [NSNumber numberWithFloat:100.00];        NSLog(@"%g\n",[floatNumber floatValue]);        //floatValue 作为NSNumber的一个对象方法用来返回一个浮点型数据的值                //下面验证两个NSNumber是否相等        if ([intNumber isEqualToNumber:floatNumber]) {            NSLog(@"intNumber和floatNumber的数学值相等。\n");        }        else            NSLog(@"intNumber和floatNumber的数学值不相等。\n");                //判断NSNumber值的大小                if ([intNumber compare:myNumber] == NSOrderedDescending) {            NSLog(@"前者的值比较小");        }    }    return 0;}
程序结果:


另外:关于NSInteger::

在文档中是这么写的


也就是说 NSInteger并不是类,而是数据类型,所以执行代码清单中打注释的部分会出现警告。

0 0
原创粉丝点击