OC NSNumber NSValue

OC NSNumber NSValue


iOS的集合对象不可以存储C语言基本类型,所有可以进行装箱和拆箱,来进行OC对象操作。

NSNumber包装类

普通初始化

NSNumber * num1 = [[NSNumber alloc] initWithInt:20];
NSNumber * num2 = [NSNumber numberWithChar:'a'];

字面量初始化

NSNumber * num3 = @300;
NSNumber * num4 = @123.2;
NSNumber * num5 = @'X';

变量初始化

int a = 29;
NSNumber * num5 = @(a);

NSNumber转基本数据类型

charValue,intValue,longValue,doubleValue

NSValue包装类

typedef struct {
    int age;
    char * name;
    char sex;
} SPerson;

SPerson person;
person.name = "dahuan";
person.age = 10;
person.sex = 'm';

//将一个结构体转换为NSValue对象,
//@encode(aType) 可以返回该类型的 C 字符串(char *)的表示
NSValue * value = [NSValue valueWithBytes:&person objCType:@encode(SPerson)];

SPerson person2;

//将一个NSValue对象转换为结构体
[value getValue:&person2];

NSLog(@"%s",person2.name);
NSLog(@"%d",person2.age);
NSLog(@"%c",person2.sex);

NSRange range = {12,2};
//常用结构体装箱
NSValue * rvalue =[NSValue valueWithRange:range];
//rangeValue将NSRange拆箱
NSLog(@"%@",NSStringFromRange([rvalue rangeValue]));

转载于:https://www.cnblogs.com/xubaoaichiyu/p/5493435.html

你可能感兴趣的:(OC NSNumber NSValue)