iOS中NSnumber的使用 NSValue的使用

nsnumber

        int i=4;

        float f=3.4;

        NSNumber * n1=[NSNumber numberWithInt:i];

        NSNumber * n2=[NSNumber numberWithFloat:f];

        //把数字转成对象加到数组里

        NSMutableArray * arr=[NSMutableArray arrayWithObjects:n1, nil];

        [arr addObject:n2];

        NSLog(@"%@",arr);

        NSNumber * n3=arr[0];

        NSNumber * n4=arr[1];

        int a1=[n3 intValue];

        float f1=[n4 floatValue];

        NSLog(@"%.2f",a1+f1);


        int y=11;//也可以直接加

        [arr addObject:@(y)];

        [arr addObject:@18];

        NSLog(@"%@",arr);




nsValue

void s1()

{

    //NSValue主要用来把指针,CGRect结构体等包装成oc对象,也可以存int ,float,char,id

    CGPoint p1=CGPointMake(20, 50);//p1cgpoint类型的结构体变量

    NSMutableArray * arr=[NSMutableArray array];//创建数组

    NSValue * pointVal=[NSValue valueWithPoint:p1];//把结构体转为nsvalue对象

    [arr addObject:pointVal];

    NSLog(@"%@",arr);

    

    NSRect r1=NSMakeRect(100, 100, 100, 100);

    [arr addObject:[NSValue valueWithRect:r1]];

    NSLog(@"r1=%@",arr);

    //从数组中取出r1的值

    NSValue * r1Value=[arr lastObject];

    NSRect r2=[r1Value rectValue];

    NSLog(@"%@",NSStringFromRect(r2));

}

typedef struct D{

    int year;

    int month;

    int day;

} MyDate;


int main(int argc, const char * argv[]) {

    @autoreleasepool {

      

        MyDate md={2015,5,7};

        //@encode作用把MyDate类型生成一个常量字符串描述

        NSValue * val=[NSValue valueWithBytes:&md objCType:@encode(MyDate)];

        //定义一个数组,val存储到数组中

     //   NSMutableArray * arr=[NSMutableArray arrayWithObject:val];

        //从数组中取出来NSValue对象

        //从对象中,取出结构体变量的值

        //传入一个结构体变量的地址

        MyDate tmd;

        //getValue获取结构值,保存到结构体变量tmd

        [val getValue:&tmd];

        NSLog(@"%d,%d,%d",tmd.year,tmd.month,tmd.day);

    }

    return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值