Foundation框架-05 NSNumber和NSValue

Foundation框架-05 NSNumber和NSValue


1.NSNumber类

  • NSNumber可以将基本数据类型转换为对象类型
  • 将基本数据类型转换为NSNumer对象类型
    • NSNumber *valueNumber = [NSNumber numberWithInt:(基本数据类型)value];
  • 将对象类型转换为基本数据类型
    • int value = [intNumber intVlue];
  • 基本数据类型转换对象类型简写
    • NSNumber *temp = @(number);
    • NSNumber *temp =@10;
    • // 注意: 如果传入的是变量那么必须在@后面写上(), 如果传入的常量, 那么@后面的()可以省略

2.NSValue类

  • NSNumber是NSValue的子类, 但NSNumber只能包装数字类型,NSValue可以包装任意值
  • 利用NSValue包装常见的结构体
    • CGPoint point = CGPointMake(x,y);
    • NSValue *value = [NSValue valueWithPoint:point];//将point包装为NSValue对象
    • -(NSPoint)pointValue;//从对象中取出此前包转的结构体
  • 利用NSValue包装自定义的结构体
 typedef struct{
        int age;
        char *name;
        double height;
    }Person;
Person p = {30, "lnj", 1.75};
// valueWithBytes: 接收一个指针, 需要传递需要包装的结构体的变量的地址
// objCType: 需要传递需要包装的数据类型
NSValue *pValue = [NSValue valueWithBytes:&p objCType:@encode(Person)];
// 从NSValue中取出自定义的结构体变量
Person res;
[pValue getValue:&res];

3.注意点

  • 由于NSArray\NSDictionary中只能存放OC对象,不能存放int\float\double等基本数据类,如果真想把基本数据(比如int)放进数组或字典中,需要先将基本数据类型包装成OC对象
  • 一般若是包装基本数据类型,使用NSNumber,包装构造类型或自定义构造类型时使用NSValue
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值