Objective-C基础之NSValue包装结构体

很多情况,我们需要将结构体存到数组中,但是结构体不是对象,所以要首先将结构体转换成对象才能保存,NSValue就能把结构体包装成为对象:

1. 一般的结构体的包装和解包 :

    //1.创建NSValue(包装结构体), NSValue是NSNumber的父类
    //注意:结构体不是对象
    NSRange rang = {100,6};
    //NSRange封包
    NSValue *rangValue = [NSValue valueWithRange:rang];
    //NSRange解包
    rang = [rangValue rangeValue];
    
    //NSPoint封包
    NSPoint point= {12, 21};
    NSValue *pointValue = [NSValue valueWithPoint:point];
    //NSPoint解包
    point = [pointValue pointValue];
2. 自定义结构体 的包装和解包 :

    //自定义结构体
    struct MyPoint {
        float x;
        float y;
    };
    //将自定义的结构体包装成NSValue对象
    struct MyPoint p = {50,100};
    NSValue *pointValue2 = [NSValue value:&p withObjCType:@encode(struct MyPoint)];
    
    //2.解包结构体
    struct MyPoint p2;
    [pointValue2 getValue:&p2];
    
    NSLog(@"x=%f,y=%f",p2.x,p2.y);


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值