【Foundation-86-1】#import <Foundation/NSValue.h>基础创建

本文介绍了NSValue类作为简单容器的使用方式,该容器能够存储各种C或Objective-C数据类型,如int、float、char及指针等。通过示例展示了如何使用NSValue存储CGRect类型的结构体,并从NSValue中获取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


"一个NSValue对象是用来存储一个C或者Objective-C数据的简单容器。它可以保存任意类型的数据,比如int,float,char,当然也可以是指pointers, structures, and object ids。NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里,例如那些需要其元素是对象的数据结构,如NSArray或者NSSet的实例。需要注意的是NSValue对象一直是不可枚举的。"--引用


@interface NSValue :NSObject <NSCopying,NSSecureCoding>


- (void)getValue:(void *)value;// 获取value 数据

@property (readonly)const char *objCTypeNS_RETURNS_INNER_POINTER;// 数据类型


// 保存数据

- (instancetype)initWithBytes:(constvoid *)value objCType:(constchar *)type NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithCoder:(NSCoder *)aDecoderNS_DESIGNATED_INITIALIZER;//NSCoder 带研究


@end


    
    //结构体(可以自己创建)
    CGRect rect = CGRectMake(111, 111, 22, 33);
    //value 保存 rect 的地址(CGRect类型)
    NSValue *rectValue = [NSValue valueWithBytes:&rect objCType:@encode(CGRect)];
    //新newRect
    CGRect newRect = CGRectMake(11, 11, 22, 22);
    //newRect就可以获取 rectValue 中的数据
    [rectValue getValue:&newRect];
    
    
    NSLog(@"%@",rectValue); //{{111,111},{22,33}}
    NSLog(@"%f,%f,%f,%f",newRect.origin.x,newRect.origin.y,newRect.size.width,newRect.size.height);//111,111,22,33

    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值