关于NSNumber & NSValue的方法知识简单了解

简单分享下,希望大牛们多多指点迷津,逐步修改,完善不足支持。借鉴之处,还请谅解

 

#import <Foundation/Foundation.h>

 

typedef struct{             //C-结构体

    int year;

    int month;

    int day;

}Date;

 

void text(){

    Date mydate;                //定义一个结构体变量

    Date date={2016,8,20};

    

    char *type=@encode(Date);   //根据结构体类型生成 对应的 类型描述字符串

            //void* 代表任何指针。这里要传结构体的地址&date

    NSValue *val=[NSValue value:&date withObjCType:type];

//    [val objCType];     //取出类型描述字符串

    

    [val getValue:&mydate];        //取出包装好的结构体

    NSLog(@"%i-%i-%i",mydate.year,mydate.month,mydate.day);   //.表示访问成员

}

 

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

    @autoreleasepool {

        

#pragma mark NSNumber常用方法

        //只能包装数字,不能包装结构体,不支持包装的自动解包

        NSNumber *num=[NSNumber numberWithInt:10];

               //将int类型10 包装给一个NSNumber对象

        NSMutableArray *array=[NSMutableArray array];

        [array addObject:num];    //添加数值到数组中

        NSNumber *num1=[array lastObject];

               //取出的还是一个NSNumber对象,不支持自动解包

        int number=[num1 intValue];   //将NSNumber转化成int类型

        num=@12;        //快速包装数字对象

        

#pragma mark NSValue常用方法

        //包装类,NSValue是NSNumber的父类,可以包装任意值

        CGPoint point=CGPointMake(10, 10);

        NSValue *value=[NSValue valueWithPoint:point];

        //将结构体包装成一个对象

        [array addObject:value];    //添加value

        NSValue *v1=[array lastObject];

        CGPoint p1=[v1 pointValue];  //取出放入的value

        BOOL re=CGPointEqualToPoint(point, p1);   //判断比较

        NSValue *v2=@'a';       //快速包装字符,打印出anscii码:97

         text();

    }

    return 0;

}

 

转载于:https://www.cnblogs.com/Miracle-Huang/p/5516162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值