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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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 *[email protected](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类型

        [email protected];        //快速包装数字对象

        

#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 *[email protected]‘a‘;       //快速包装字符,打印出anscii码:97

         text();

    }

    return 0;

}

 

以上是关于关于NSNumber & NSValue的方法知识简单了解的主要内容,如果未能解决你的问题,请参考以下文章

NSNumber和NSValue

NSNumber 与NSValue

Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)

OC系列高级-NSValue

OC07 -- 迭代器/NSNumber/NSValue/NSRange/NSSet/NSDate 及相互转换.(杂)

iOS 基础数据类型及其包装类型 & 对象类型